 bondscell_results $aa19faa4-1941-11eb-2b61-9b78aaf42876queued¤logsrunning¦outputbody-intersection (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA lfpersist_js_state·has_pluto_hook_features§cell_id$aa19faa4-1941-11eb-2b61-9b78aaf42876depends_on_disabled_cells§runtime ?published_object_keysdepends_on_skipped_cells§errored$d851a202-1ca0-11eb-3da0-51fcb656783cqueued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA k~persist_js_state·has_pluto_hook_features§cell_id$d851a202-1ca0-11eb-3da0-51fcb656783cdepends_on_disabled_cells§runtime dppublished_object_keysdepends_on_skipped_cells§errored$392c25b8-1add-11eb-225d-49cfca27bef4queued¤logsrunning¦outputbody]<div class="markdown"><p>👉 Write a new method for <code>interact</code> that takes a <code>photon</code> and a <code>hit</code> of type <code>Intersection&#123;Sphere&#125;</code>, that implements refraction. It returns a new <code>Photon</code> positioned at the hit point, with the refracted velocity and the new index of refraction.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gH$persist_js_state·has_pluto_hook_features§cell_id$392c25b8-1add-11eb-225d-49cfca27bef4depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150queued¤logsrunning¦outputbodyprefixSphereelementscenterprefixFloat64elements5.0text/plain-1.5text/plaintypeArrayprefix_shortobjectidfdafe218fb3e834a!application/vnd.pluto.tree+objectradius3text/plainior1.5text/plaintypestructprefix_shortSphereobjectid65c283ebbf524b9mime!application/vnd.pluto.tree+objectrootassigneetest_lenslast_run_timestampA ppersist_js_state·has_pluto_hook_features§cell_id$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150depends_on_disabled_cells§runtimeLpublished_object_keysdepends_on_skipped_cells§errored$83acf10e-1c9e-11eb-3426-bb28e7bc6c79queued¤logsrunning¦outputbodyA
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600">
<defs>
  <clipPath id="clip250">
    <rect x="0" y="0" width="2400" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip250)" d="M0 1600 L2400 1600 L2400 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip251">
    <rect x="480" y="0" width="1681" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip250)" d="M546.209 1486.45 L1985.41 1486.45 L1985.41 47.2441 L546.209 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip252">
    <rect x="546" y="47" width="1440" height="1440"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="611.628,1486.45 611.628,47.2441 "/>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="938.72,1486.45 938.72,47.2441 "/>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1265.81,1486.45 1265.81,47.2441 "/>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1592.9,1486.45 1592.9,47.2441 "/>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1919.99,1486.45 1919.99,47.2441 "/>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,1421.03 1985.41,1421.03 "/>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,1093.94 1985.41,1093.94 "/>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,766.846 1985.41,766.846 "/>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,439.754 1985.41,439.754 "/>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,112.662 1985.41,112.662 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1486.45 1985.41,1486.45 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="611.628,1486.45 611.628,1467.55 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="938.72,1486.45 938.72,1467.55 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1265.81,1486.45 1265.81,1467.55 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1592.9,1486.45 1592.9,1467.55 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1919.99,1486.45 1919.99,1467.55 "/>
<path clip-path="url(#clip250)" d="M565.69 1532.02 L595.366 1532.02 L595.366 1535.95 L565.69 1535.95 L565.69 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M606.269 1544.91 L613.908 1544.91 L613.908 1518.55 L605.598 1520.21 L605.598 1515.95 L613.862 1514.29 L618.537 1514.29 L618.537 1544.91 L626.176 1544.91 L626.176 1548.85 L606.269 1548.85 L606.269 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M645.621 1517.37 Q642.01 1517.37 640.181 1520.93 Q638.375 1524.47 638.375 1531.6 Q638.375 1538.71 640.181 1542.27 Q642.01 1545.82 645.621 1545.82 Q649.255 1545.82 651.06 1542.27 Q652.889 1538.71 652.889 1531.6 Q652.889 1524.47 651.06 1520.93 Q649.255 1517.37 645.621 1517.37 M645.621 1513.66 Q651.431 1513.66 654.486 1518.27 Q657.565 1522.85 657.565 1531.6 Q657.565 1540.33 654.486 1544.94 Q651.431 1549.52 645.621 1549.52 Q639.81 1549.52 636.732 1544.94 Q633.676 1540.33 633.676 1531.6 Q633.676 1522.85 636.732 1518.27 Q639.81 1513.66 645.621 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M908.361 1532.02 L938.037 1532.02 L938.037 1535.95 L908.361 1535.95 L908.361 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M948.175 1514.29 L966.532 1514.29 L966.532 1518.22 L952.458 1518.22 L952.458 1526.7 Q953.476 1526.35 954.495 1526.19 Q955.513 1526 956.532 1526 Q962.319 1526 965.699 1529.17 Q969.078 1532.34 969.078 1537.76 Q969.078 1543.34 965.606 1546.44 Q962.134 1549.52 955.814 1549.52 Q953.638 1549.52 951.37 1549.15 Q949.125 1548.78 946.717 1548.04 L946.717 1543.34 Q948.8 1544.47 951.023 1545.03 Q953.245 1545.58 955.722 1545.58 Q959.726 1545.58 962.064 1543.48 Q964.402 1541.37 964.402 1537.76 Q964.402 1534.15 962.064 1532.04 Q959.726 1529.94 955.722 1529.94 Q953.847 1529.94 951.972 1530.35 Q950.12 1530.77 948.175 1531.65 L948.175 1514.29 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M1265.81 1517.37 Q1262.2 1517.37 1260.37 1520.93 Q1258.57 1524.47 1258.57 1531.6 Q1258.57 1538.71 1260.37 1542.27 Q1262.2 1545.82 1265.81 1545.82 Q1269.45 1545.82 1271.25 1542.27 Q1273.08 1538.71 1273.08 1531.6 Q1273.08 1524.47 1271.25 1520.93 Q1269.45 1517.37 1265.81 1517.37 M1265.81 1513.66 Q1271.62 1513.66 1274.68 1518.27 Q1277.76 1522.85 1277.76 1531.6 Q1277.76 1540.33 1274.68 1544.94 Q1271.62 1549.52 1265.81 1549.52 Q1260 1549.52 1256.92 1544.94 Q1253.87 1540.33 1253.87 1531.6 Q1253.87 1522.85 1256.92 1518.27 Q1260 1513.66 1265.81 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M1583.18 1514.29 L1601.54 1514.29 L1601.54 1518.22 L1587.46 1518.22 L1587.46 1526.7 Q1588.48 1526.35 1589.5 1526.19 Q1590.52 1526 1591.54 1526 Q1597.32 1526 1600.7 1529.17 Q1604.08 1532.34 1604.08 1537.76 Q1604.08 1543.34 1600.61 1546.44 Q1597.14 1549.52 1590.82 1549.52 Q1588.64 1549.52 1586.38 1549.15 Q1584.13 1548.78 1581.72 1548.04 L1581.72 1543.34 Q1583.81 1544.47 1586.03 1545.03 Q1588.25 1545.58 1590.73 1545.58 Q1594.73 1545.58 1597.07 1543.48 Q1599.41 1541.37 1599.41 1537.76 Q1599.41 1534.15 1597.07 1532.04 Q1594.73 1529.94 1590.73 1529.94 Q1588.85 1529.94 1586.98 1530.35 Q1585.13 1530.77 1583.18 1531.65 L1583.18 1514.29 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M1894.68 1544.91 L1902.32 1544.91 L1902.32 1518.55 L1894.01 1520.21 L1894.01 1515.95 L1902.27 1514.29 L1906.95 1514.29 L1906.95 1544.91 L1914.59 1544.91 L1914.59 1548.85 L1894.68 1548.85 L1894.68 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M1934.03 1517.37 Q1930.42 1517.37 1928.59 1520.93 Q1926.79 1524.47 1926.79 1531.6 Q1926.79 1538.71 1928.59 1542.27 Q1930.42 1545.82 1934.03 1545.82 Q1937.67 1545.82 1939.47 1542.27 Q1941.3 1538.71 1941.3 1531.6 Q1941.3 1524.47 1939.47 1520.93 Q1937.67 1517.37 1934.03 1517.37 M1934.03 1513.66 Q1939.84 1513.66 1942.9 1518.27 Q1945.98 1522.85 1945.98 1531.6 Q1945.98 1540.33 1942.9 1544.94 Q1939.84 1549.52 1934.03 1549.52 Q1928.22 1549.52 1925.15 1544.94 Q1922.09 1540.33 1922.09 1531.6 Q1922.09 1522.85 1925.15 1518.27 Q1928.22 1513.66 1934.03 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1486.45 546.209,47.2441 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1421.03 558.72,1421.03 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1093.94 558.72,1093.94 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,766.846 558.72,766.846 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,439.754 558.72,439.754 "/>
<polyline clip-path="url(#clip250)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,112.662 558.72,112.662 "/>
<path clip-path="url(#clip250)" d="M418.335 1421.48 L448.011 1421.48 L448.011 1425.42 L418.335 1425.42 L418.335 1421.48 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M458.913 1434.37 L466.552 1434.37 L466.552 1408.01 L458.242 1409.68 L458.242 1405.42 L466.506 1403.75 L471.182 1403.75 L471.182 1434.37 L478.821 1434.37 L478.821 1438.31 L458.913 1438.31 L458.913 1434.37 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M498.265 1406.83 Q494.654 1406.83 492.825 1410.39 Q491.02 1413.93 491.02 1421.06 Q491.02 1428.17 492.825 1431.74 Q494.654 1435.28 498.265 1435.28 Q501.899 1435.28 503.705 1431.74 Q505.533 1428.17 505.533 1421.06 Q505.533 1413.93 503.705 1410.39 Q501.899 1406.83 498.265 1406.83 M498.265 1403.12 Q504.075 1403.12 507.131 1407.73 Q510.209 1412.31 510.209 1421.06 Q510.209 1429.79 507.131 1434.4 Q504.075 1438.98 498.265 1438.98 Q492.455 1438.98 489.376 1434.4 Q486.321 1429.79 486.321 1421.06 Q486.321 1412.31 489.376 1407.73 Q492.455 1403.12 498.265 1403.12 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M449.492 1094.39 L479.168 1094.39 L479.168 1098.32 L449.492 1098.32 L449.492 1094.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M489.307 1076.66 L507.663 1076.66 L507.663 1080.59 L493.589 1080.59 L493.589 1089.07 Q494.608 1088.72 495.626 1088.56 Q496.645 1088.37 497.663 1088.37 Q503.45 1088.37 506.83 1091.54 Q510.209 1094.71 510.209 1100.13 Q510.209 1105.71 506.737 1108.81 Q503.265 1111.89 496.946 1111.89 Q494.77 1111.89 492.501 1111.52 Q490.256 1111.15 487.848 1110.41 L487.848 1105.71 Q489.932 1106.84 492.154 1107.4 Q494.376 1107.95 496.853 1107.95 Q500.858 1107.95 503.196 1105.85 Q505.533 1103.74 505.533 1100.13 Q505.533 1096.52 503.196 1094.41 Q500.858 1092.31 496.853 1092.31 Q494.978 1092.31 493.103 1092.72 Q491.251 1093.14 489.307 1094.02 L489.307 1076.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M498.265 752.645 Q494.654 752.645 492.825 756.209 Q491.02 759.751 491.02 766.881 Q491.02 773.987 492.825 777.552 Q494.654 781.094 498.265 781.094 Q501.899 781.094 503.705 777.552 Q505.533 773.987 505.533 766.881 Q505.533 759.751 503.705 756.209 Q501.899 752.645 498.265 752.645 M498.265 748.941 Q504.075 748.941 507.131 753.547 Q510.209 758.131 510.209 766.881 Q510.209 775.608 507.131 780.214 Q504.075 784.797 498.265 784.797 Q492.455 784.797 489.376 780.214 Q486.321 775.608 486.321 766.881 Q486.321 758.131 489.376 753.547 Q492.455 748.941 498.265 748.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M489.307 422.474 L507.663 422.474 L507.663 426.409 L493.589 426.409 L493.589 434.882 Q494.608 434.534 495.626 434.372 Q496.645 434.187 497.663 434.187 Q503.45 434.187 506.83 437.358 Q510.209 440.53 510.209 445.946 Q510.209 451.525 506.737 454.627 Q503.265 457.706 496.946 457.706 Q494.77 457.706 492.501 457.335 Q490.256 456.965 487.848 456.224 L487.848 451.525 Q489.932 452.659 492.154 453.215 Q494.376 453.77 496.853 453.77 Q500.858 453.77 503.196 451.664 Q505.533 449.557 505.533 445.946 Q505.533 442.335 503.196 440.229 Q500.858 438.122 496.853 438.122 Q494.978 438.122 493.103 438.539 Q491.251 438.956 489.307 439.835 L489.307 422.474 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M458.913 126.007 L466.552 126.007 L466.552 99.6417 L458.242 101.308 L458.242 97.0491 L466.506 95.3824 L471.182 95.3824 L471.182 126.007 L478.821 126.007 L478.821 129.942 L458.913 129.942 L458.913 126.007 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip250)" d="M498.265 98.4611 Q494.654 98.4611 492.825 102.026 Q491.02 105.568 491.02 112.697 Q491.02 119.804 492.825 123.368 Q494.654 126.91 498.265 126.91 Q501.899 126.91 503.705 123.368 Q505.533 119.804 505.533 112.697 Q505.533 105.568 503.705 102.026 Q501.899 98.4611 498.265 98.4611 M498.265 94.7575 Q504.075 94.7575 507.131 99.3639 Q510.209 103.947 510.209 112.697 Q510.209 121.424 507.131 126.03 Q504.075 130.614 498.265 130.614 Q492.455 130.614 489.376 126.03 Q486.321 121.424 486.321 112.697 Q486.321 103.947 489.376 99.3639 Q492.455 94.7575 498.265 94.7575 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip252)" d="M1789.16 864.974 L1787.55 839.877 L1782.74 815.193 L1774.82 791.325 L1763.9 768.668 L1750.18 747.591 L1733.88 728.442 L1715.27 711.535 L1694.64 697.147 L1672.34 685.515 L1648.74 676.83 L1624.23 671.234 L1599.19 668.819 L1574.06 669.625 L1549.23 673.639 L1525.12 680.794 L1502.13 690.974 L1480.62 704.011 L1460.96 719.69 L1443.47 737.755 L1428.42 757.91 L1416.08 779.822 L1406.65 803.132 L1400.27 827.458 L1397.05 852.399 L1397.05 877.548 L1400.27 902.489 L1406.65 926.815 L1416.08 950.125 L1428.42 972.037 L1443.47 992.192 L1460.96 1010.26 L1480.62 1025.94 L1502.13 1038.97 L1525.12 1049.15 L1549.23 1056.31 L1574.06 1060.32 L1599.19 1061.13 L1624.23 1058.71 L1648.74 1053.12 L1672.34 1044.43 L1694.64 1032.8 L1715.27 1018.41 L1733.88 1001.5 L1750.18 982.356 L1763.9 961.279 L1774.82 938.622 L1782.74 914.755 L1787.55 890.07 L1789.16 864.974 L1789.16 864.974  Z" fill="#009af9" fill-rule="evenodd" fill-opacity="0.2"/>
<polyline clip-path="url(#clip252)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1789.16,864.974 1787.55,839.877 1782.74,815.193 1774.82,791.325 1763.9,768.668 1750.18,747.591 1733.88,728.442 1715.27,711.535 1694.64,697.147 1672.34,685.515 1648.74,676.83 1624.23,671.234 1599.19,668.819 1574.06,669.625 1549.23,673.639 1525.12,680.794 1502.13,690.974 1480.62,704.011 1460.96,719.69 1443.47,737.755 1428.42,757.91 1416.08,779.822 1406.65,803.132 1400.27,827.458 1397.05,852.399 1397.05,877.548 1400.27,902.489 1406.65,926.815 1416.08,950.125 1428.42,972.037 1443.47,992.192 1460.96,1010.26 1480.62,1025.94 1502.13,1038.97 1525.12,1049.15 1549.23,1056.31 1574.06,1060.32 1599.19,1061.13 1624.23,1058.71 1648.74,1053.12 1672.34,1044.43 1694.64,1032.8 1715.27,1018.41 1733.88,1001.5 1750.18,982.356 1763.9,961.279 1774.82,938.622 1782.74,914.755 1787.55,890.07 1789.16,864.974 1789.16,864.974 "/>
<polyline clip-path="url(#clip252)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1919.99,-541.521 1919.99,2075.21 "/>
<polyline clip-path="url(#clip252)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="611.628,2075.21 611.628,-541.521 "/>
<polyline clip-path="url(#clip252)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2574.18,1421.03 -42.5558,1421.03 "/>
<polyline clip-path="url(#clip252)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="-42.5558,112.662 2574.18,112.662 "/>
<polyline clip-path="url(#clip252)" style="stroke:#ff0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:20; stroke-opacity:1; fill:none" points="1265.81,766.846 1422.94,766.846 1786.77,834.467 1919.99,885.76 "/>
</svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA qXupersist_js_state·has_pluto_hook_features§cell_id$83acf10e-1c9e-11eb-3426-bb28e7bc6c79depends_on_disabled_cells§runtimerO?published_object_keysdepends_on_skipped_cells§errored$2a2b7284-1ade-11eb-3b71-d17fe2ca638aqueued¤logsrunning¦outputbodyH<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="200" viewBox="0 0 1600 800">
<defs>
  <clipPath id="clip970">
    <rect x="0" y="0" width="1600" height="800"/>
  </clipPath>
</defs>
<path clip-path="url(#clip970)" d="M0 800 L1600 800 L1600 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip971">
    <rect x="320" y="0" width="1121" height="800"/>
  </clipPath>
</defs>
<path clip-path="url(#clip970)" d="M369.928 703.088 L1353.69 703.088 L1353.69 47.2441 L369.928 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip972">
    <rect x="369" y="47" width="985" height="657"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="369.928,703.088 369.928,47.2441 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="533.889,703.088 533.889,47.2441 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="697.85,703.088 697.85,47.2441 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="861.811,703.088 861.811,47.2441 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1025.77,703.088 1025.77,47.2441 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1189.73,703.088 1189.73,47.2441 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1353.69,703.088 1353.69,47.2441 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="369.928,703.088 1353.69,703.088 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="369.928,539.127 1353.69,539.127 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="369.928,375.166 1353.69,375.166 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="369.928,211.205 1353.69,211.205 "/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="369.928,47.2441 1353.69,47.2441 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="369.928,703.088 1353.69,703.088 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="369.928,703.088 369.928,684.19 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="533.889,703.088 533.889,684.19 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="697.85,703.088 697.85,684.19 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="861.811,703.088 861.811,684.19 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1025.77,703.088 1025.77,684.19 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1189.73,703.088 1189.73,684.19 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1353.69,703.088 1353.69,684.19 "/>
<path clip-path="url(#clip970)" d="M324.489 742.259 L354.165 742.259 L354.165 746.194 L324.489 746.194 L324.489 742.259 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M365.067 755.153 L372.706 755.153 L372.706 728.787 L364.396 730.454 L364.396 726.195 L372.66 724.528 L377.336 724.528 L377.336 755.153 L384.975 755.153 L384.975 759.088 L365.067 759.088 L365.067 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M394.465 724.528 L412.822 724.528 L412.822 728.463 L398.748 728.463 L398.748 736.935 Q399.766 736.588 400.785 736.426 Q401.803 736.241 402.822 736.241 Q408.609 736.241 411.988 739.412 Q415.368 742.583 415.368 748 Q415.368 753.579 411.896 756.68 Q408.424 759.759 402.104 759.759 Q399.928 759.759 397.66 759.389 Q395.414 759.018 393.007 758.278 L393.007 753.579 Q395.09 754.713 397.313 755.268 Q399.535 755.824 402.012 755.824 Q406.016 755.824 408.354 753.718 Q410.692 751.611 410.692 748 Q410.692 744.389 408.354 742.282 Q406.016 740.176 402.012 740.176 Q400.137 740.176 398.262 740.593 Q396.41 741.009 394.465 741.889 L394.465 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M487.952 742.259 L517.628 742.259 L517.628 746.194 L487.952 746.194 L487.952 742.259 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M528.531 755.153 L536.169 755.153 L536.169 728.787 L527.859 730.454 L527.859 726.195 L536.123 724.528 L540.799 724.528 L540.799 755.153 L548.438 755.153 L548.438 759.088 L528.531 759.088 L528.531 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M567.882 727.607 Q564.271 727.607 562.442 731.171 Q560.637 734.713 560.637 741.843 Q560.637 748.949 562.442 752.514 Q564.271 756.055 567.882 756.055 Q571.516 756.055 573.322 752.514 Q575.151 748.949 575.151 741.843 Q575.151 734.713 573.322 731.171 Q571.516 727.607 567.882 727.607 M567.882 723.903 Q573.692 723.903 576.748 728.509 Q579.827 733.093 579.827 741.843 Q579.827 750.569 576.748 755.176 Q573.692 759.759 567.882 759.759 Q562.072 759.759 558.993 755.176 Q555.938 750.569 555.938 741.843 Q555.938 733.093 558.993 728.509 Q562.072 723.903 567.882 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M667.492 742.259 L697.167 742.259 L697.167 746.194 L667.492 746.194 L667.492 742.259 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M707.306 724.528 L725.663 724.528 L725.663 728.463 L711.589 728.463 L711.589 736.935 Q712.607 736.588 713.626 736.426 Q714.644 736.241 715.663 736.241 Q721.45 736.241 724.829 739.412 Q728.209 742.583 728.209 748 Q728.209 753.579 724.737 756.68 Q721.265 759.759 714.945 759.759 Q712.769 759.759 710.501 759.389 Q708.255 759.018 705.848 758.278 L705.848 753.579 Q707.931 754.713 710.153 755.268 Q712.376 755.824 714.853 755.824 Q718.857 755.824 721.195 753.718 Q723.533 751.611 723.533 748 Q723.533 744.389 721.195 742.282 Q718.857 740.176 714.853 740.176 Q712.978 740.176 711.103 740.593 Q709.251 741.009 707.306 741.889 L707.306 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M861.811 727.607 Q858.2 727.607 856.371 731.171 Q854.566 734.713 854.566 741.843 Q854.566 748.949 856.371 752.514 Q858.2 756.055 861.811 756.055 Q865.446 756.055 867.251 752.514 Q869.08 748.949 869.08 741.843 Q869.08 734.713 867.251 731.171 Q865.446 727.607 861.811 727.607 M861.811 723.903 Q867.621 723.903 870.677 728.509 Q873.756 733.093 873.756 741.843 Q873.756 750.569 870.677 755.176 Q867.621 759.759 861.811 759.759 Q856.001 759.759 852.922 755.176 Q849.867 750.569 849.867 741.843 Q849.867 733.093 852.922 728.509 Q856.001 723.903 861.811 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M1016.05 724.528 L1034.41 724.528 L1034.41 728.463 L1020.33 728.463 L1020.33 736.935 Q1021.35 736.588 1022.37 736.426 Q1023.39 736.241 1024.41 736.241 Q1030.19 736.241 1033.57 739.412 Q1036.95 742.583 1036.95 748 Q1036.95 753.579 1033.48 756.68 Q1030.01 759.759 1023.69 759.759 Q1021.51 759.759 1019.24 759.389 Q1017 759.018 1014.59 758.278 L1014.59 753.579 Q1016.68 754.713 1018.9 755.268 Q1021.12 755.824 1023.6 755.824 Q1027.6 755.824 1029.94 753.718 Q1032.28 751.611 1032.28 748 Q1032.28 744.389 1029.94 742.282 Q1027.6 740.176 1023.6 740.176 Q1021.72 740.176 1019.85 740.593 Q1017.99 741.009 1016.05 741.889 L1016.05 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M1164.42 755.153 L1172.06 755.153 L1172.06 728.787 L1163.75 730.454 L1163.75 726.195 L1172.01 724.528 L1176.69 724.528 L1176.69 755.153 L1184.33 755.153 L1184.33 759.088 L1164.42 759.088 L1164.42 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M1203.77 727.607 Q1200.16 727.607 1198.33 731.171 Q1196.53 734.713 1196.53 741.843 Q1196.53 748.949 1198.33 752.514 Q1200.16 756.055 1203.77 756.055 Q1207.41 756.055 1209.21 752.514 Q1211.04 748.949 1211.04 741.843 Q1211.04 734.713 1209.21 731.171 Q1207.41 727.607 1203.77 727.607 M1203.77 723.903 Q1209.58 723.903 1212.64 728.509 Q1215.72 733.093 1215.72 741.843 Q1215.72 750.569 1212.64 755.176 Q1209.58 759.759 1203.77 759.759 Q1197.96 759.759 1194.88 755.176 Q1191.83 750.569 1191.83 741.843 Q1191.83 733.093 1194.88 728.509 Q1197.96 723.903 1203.77 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M1328.88 755.153 L1336.52 755.153 L1336.52 728.787 L1328.21 730.454 L1328.21 726.195 L1336.47 724.528 L1341.15 724.528 L1341.15 755.153 L1348.79 755.153 L1348.79 759.088 L1328.88 759.088 L1328.88 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M1358.28 724.528 L1376.63 724.528 L1376.63 728.463 L1362.56 728.463 L1362.56 736.935 Q1363.58 736.588 1364.6 736.426 Q1365.62 736.241 1366.63 736.241 Q1372.42 736.241 1375.8 739.412 Q1379.18 742.583 1379.18 748 Q1379.18 753.579 1375.71 756.68 Q1372.24 759.759 1365.92 759.759 Q1363.74 759.759 1361.47 759.389 Q1359.23 759.018 1356.82 758.278 L1356.82 753.579 Q1358.9 754.713 1361.12 755.268 Q1363.35 755.824 1365.82 755.824 Q1369.83 755.824 1372.17 753.718 Q1374.5 751.611 1374.5 748 Q1374.5 744.389 1372.17 742.282 Q1369.83 740.176 1365.82 740.176 Q1363.95 740.176 1362.07 740.593 Q1360.22 741.009 1358.28 741.889 L1358.28 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="369.928,703.088 369.928,47.2441 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="369.928,703.088 383.382,703.088 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="369.928,539.127 383.382,539.127 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="369.928,375.166 383.382,375.166 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="369.928,211.205 383.382,211.205 "/>
<polyline clip-path="url(#clip970)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="369.928,47.2441 383.382,47.2441 "/>
<path clip-path="url(#clip970)" d="M254.054 703.539 L283.73 703.539 L283.73 707.474 L254.054 707.474 L254.054 703.539 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M294.632 716.433 L302.271 716.433 L302.271 690.067 L293.961 691.734 L293.961 687.475 L302.225 685.808 L306.901 685.808 L306.901 716.433 L314.54 716.433 L314.54 720.368 L294.632 720.368 L294.632 716.433 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M333.984 688.887 Q330.373 688.887 328.544 692.451 Q326.739 695.993 326.739 703.123 Q326.739 710.229 328.544 713.794 Q330.373 717.335 333.984 717.335 Q337.618 717.335 339.424 713.794 Q341.253 710.229 341.253 703.123 Q341.253 695.993 339.424 692.451 Q337.618 688.887 333.984 688.887 M333.984 685.183 Q339.794 685.183 342.85 689.789 Q345.928 694.373 345.928 703.123 Q345.928 711.849 342.85 716.456 Q339.794 721.039 333.984 721.039 Q328.174 721.039 325.095 716.456 Q322.04 711.849 322.04 703.123 Q322.04 694.373 325.095 689.789 Q328.174 685.183 333.984 685.183 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M285.211 539.578 L314.887 539.578 L314.887 543.513 L285.211 543.513 L285.211 539.578 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M325.026 521.847 L343.382 521.847 L343.382 525.782 L329.308 525.782 L329.308 534.254 Q330.327 533.907 331.345 533.745 Q332.364 533.56 333.382 533.56 Q339.169 533.56 342.549 536.731 Q345.928 539.902 345.928 545.319 Q345.928 550.898 342.456 554 Q338.984 557.078 332.665 557.078 Q330.489 557.078 328.22 556.708 Q325.975 556.337 323.567 555.597 L323.567 550.898 Q325.651 552.032 327.873 552.588 Q330.095 553.143 332.572 553.143 Q336.577 553.143 338.915 551.037 Q341.253 548.93 341.253 545.319 Q341.253 541.708 338.915 539.601 Q336.577 537.495 332.572 537.495 Q330.697 537.495 328.822 537.912 Q326.97 538.328 325.026 539.208 L325.026 521.847 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M333.984 360.965 Q330.373 360.965 328.544 364.529 Q326.739 368.071 326.739 375.201 Q326.739 382.307 328.544 385.872 Q330.373 389.414 333.984 389.414 Q337.618 389.414 339.424 385.872 Q341.253 382.307 341.253 375.201 Q341.253 368.071 339.424 364.529 Q337.618 360.965 333.984 360.965 M333.984 357.261 Q339.794 357.261 342.85 361.867 Q345.928 366.451 345.928 375.201 Q345.928 383.928 342.85 388.534 Q339.794 393.117 333.984 393.117 Q328.174 393.117 325.095 388.534 Q322.04 383.928 322.04 375.201 Q322.04 366.451 325.095 361.867 Q328.174 357.261 333.984 357.261 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M325.026 193.925 L343.382 193.925 L343.382 197.86 L329.308 197.86 L329.308 206.332 Q330.327 205.985 331.345 205.823 Q332.364 205.638 333.382 205.638 Q339.169 205.638 342.549 208.809 Q345.928 211.98 345.928 217.397 Q345.928 222.976 342.456 226.078 Q338.984 229.156 332.665 229.156 Q330.489 229.156 328.22 228.786 Q325.975 228.416 323.567 227.675 L323.567 222.976 Q325.651 224.11 327.873 224.666 Q330.095 225.221 332.572 225.221 Q336.577 225.221 338.915 223.115 Q341.253 221.008 341.253 217.397 Q341.253 213.786 338.915 211.68 Q336.577 209.573 332.572 209.573 Q330.697 209.573 328.822 209.99 Q326.97 210.406 325.026 211.286 L325.026 193.925 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M294.632 60.5889 L302.271 60.5889 L302.271 34.2233 L293.961 35.89 L293.961 31.6308 L302.225 29.9641 L306.901 29.9641 L306.901 60.5889 L314.54 60.5889 L314.54 64.5241 L294.632 64.5241 L294.632 60.5889 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip970)" d="M333.984 33.0428 Q330.373 33.0428 328.544 36.6076 Q326.739 40.1492 326.739 47.2788 Q326.739 54.3853 328.544 57.9501 Q330.373 61.4917 333.984 61.4917 Q337.618 61.4917 339.424 57.9501 Q341.253 54.3853 341.253 47.2788 Q341.253 40.1492 339.424 36.6076 Q337.618 33.0428 333.984 33.0428 M333.984 29.3391 Q339.794 29.3391 342.85 33.9456 Q345.928 38.5289 345.928 47.2788 Q345.928 56.0056 342.85 60.6121 Q339.794 65.1954 333.984 65.1954 Q328.174 65.1954 325.095 60.6121 Q322.04 56.0056 322.04 47.2788 Q322.04 38.5289 325.095 33.9456 Q328.174 29.3391 333.984 29.3391 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip972)" d="M1156.94 571.919 L1156.4 563.532 L1154.8 555.283 L1152.15 547.307 L1148.5 539.736 L1143.92 532.692 L1138.47 526.293 L1132.25 520.643 L1125.36 515.835 L1117.9 511.948 L1110.02 509.045 L1101.82 507.175 L1093.46 506.368 L1085.06 506.638 L1076.76 507.979 L1068.71 510.37 L1061.02 513.772 L1053.83 518.129 L1047.26 523.368 L1041.42 529.405 L1036.39 536.141 L1032.27 543.463 L1029.11 551.253 L1026.98 559.382 L1025.91 567.717 L1025.91 576.121 L1026.98 584.456 L1029.11 592.585 L1032.27 600.375 L1036.39 607.698 L1041.42 614.433 L1047.26 620.47 L1053.83 625.71 L1061.02 630.066 L1068.71 633.468 L1076.76 635.859 L1085.06 637.2 L1093.46 637.47 L1101.82 636.663 L1110.02 634.793 L1117.9 631.89 L1125.36 628.003 L1132.25 623.195 L1138.47 617.545 L1143.92 611.146 L1148.5 604.103 L1152.15 596.531 L1154.8 588.555 L1156.4 580.306 L1156.94 571.919 L1156.94 571.919  Z" fill="#009af9" fill-rule="evenodd" fill-opacity="0.2"/>
<polyline clip-path="url(#clip972)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1156.94,571.919 1156.4,563.532 1154.8,555.283 1152.15,547.307 1148.5,539.736 1143.92,532.692 1138.47,526.293 1132.25,520.643 1125.36,515.835 1117.9,511.948 1110.02,509.045 1101.82,507.175 1093.46,506.368 1085.06,506.638 1076.76,507.979 1068.71,510.37 1061.02,513.772 1053.83,518.129 1047.26,523.368 1041.42,529.405 1036.39,536.141 1032.27,543.463 1029.11,551.253 1026.98,559.382 1025.91,567.717 1025.91,576.121 1026.98,584.456 1029.11,592.585 1032.27,600.375 1036.39,607.698 1041.42,614.433 1047.26,620.47 1053.83,625.71 1061.02,630.066 1068.71,633.468 1076.76,635.859 1085.06,637.2 1093.46,637.47 1101.82,636.663 1110.02,634.793 1117.9,631.89 1125.36,628.003 1132.25,623.195 1138.47,617.545 1143.92,611.146 1148.5,604.103 1152.15,596.531 1154.8,588.555 1156.4,580.306 1156.94,571.919 "/>
</svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA opersist_js_state·has_pluto_hook_features§cell_id$2a2b7284-1ade-11eb-3b71-d17fe2ca638adepends_on_disabled_cells§runtime>published_object_keysdepends_on_skipped_cells§errored$bc10541e-1ac3-11eb-0b5f-916922f1a8e8queued¤logsrunning¦outputbodyIntersection{Wall}mimetext/plainrootassigneelast_run_timestampA lKpersist_js_state·has_pluto_hook_features§cell_id$bc10541e-1ac3-11eb-0b5f-916922f1a8e8depends_on_disabled_cells§runtime+Ipublished_object_keysdepends_on_skipped_cells§errored$f83da7f8-1acc-11eb-02d7-f33ffe518531queued¤logsrunning¦outputbody`<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600">
<defs>
  <clipPath id="clip330">
    <rect x="0" y="0" width="2400" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip330)" d="M0 1600 L2400 1600 L2400 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip331">
    <rect x="480" y="0" width="1681" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip330)" d="M193.936 1414.49 L2352.76 1414.49 L2352.76 119.2 L193.936 119.2  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip332">
    <rect x="193" y="119" width="2160" height="1296"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="193.936,1414.49 193.936,119.2 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="625.7,1414.49 625.7,119.2 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1057.46,1414.49 1057.46,119.2 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1489.23,1414.49 1489.23,119.2 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1920.99,1414.49 1920.99,119.2 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2352.76,1414.49 2352.76,119.2 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="193.936,1414.49 2352.76,1414.49 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="193.936,1198.61 2352.76,1198.61 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="193.936,982.728 2352.76,982.728 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="193.936,766.846 2352.76,766.846 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="193.936,550.964 2352.76,550.964 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="193.936,335.082 2352.76,335.082 "/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="193.936,119.2 2352.76,119.2 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="193.936,1414.49 2352.76,1414.49 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="193.936,1414.49 193.936,1397.48 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="625.7,1414.49 625.7,1397.48 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1057.46,1414.49 1057.46,1397.48 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1489.23,1414.49 1489.23,1397.48 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1920.99,1414.49 1920.99,1397.48 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2352.76,1414.49 2352.76,1397.48 "/>
<path clip-path="url(#clip330)" d="M198.184 1458.26 Q201.54 1458.98 203.415 1461.24 Q205.313 1463.51 205.313 1466.85 Q205.313 1471.96 201.795 1474.76 Q198.276 1477.56 191.795 1477.56 Q189.619 1477.56 187.304 1477.12 Q185.012 1476.71 182.559 1475.85 L182.559 1471.34 Q184.503 1472.47 186.818 1473.05 Q189.133 1473.63 191.656 1473.63 Q196.054 1473.63 198.346 1471.89 Q200.66 1470.16 200.66 1466.85 Q200.66 1463.79 198.508 1462.08 Q196.378 1460.34 192.559 1460.34 L188.531 1460.34 L188.531 1456.5 L192.744 1456.5 Q196.193 1456.5 198.022 1455.13 Q199.85 1453.74 199.85 1451.15 Q199.85 1448.49 197.952 1447.08 Q196.077 1445.64 192.559 1445.64 Q190.637 1445.64 188.438 1446.06 Q186.239 1446.48 183.6 1447.36 L183.6 1443.19 Q186.262 1442.45 188.577 1442.08 Q190.915 1441.71 192.975 1441.71 Q198.299 1441.71 201.401 1444.14 Q204.503 1446.54 204.503 1450.67 Q204.503 1453.54 202.86 1455.53 Q201.216 1457.49 198.184 1458.26 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M628.709 1446.41 L616.904 1464.85 L628.709 1464.85 L628.709 1446.41 M627.482 1442.33 L633.362 1442.33 L633.362 1464.85 L638.293 1464.85 L638.293 1468.74 L633.362 1468.74 L633.362 1476.89 L628.709 1476.89 L628.709 1468.74 L613.107 1468.74 L613.107 1464.23 L627.482 1442.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M1047.74 1442.33 L1066.1 1442.33 L1066.1 1446.27 L1052.02 1446.27 L1052.02 1454.74 Q1053.04 1454.39 1054.06 1454.23 Q1055.08 1454.04 1056.1 1454.04 Q1061.89 1454.04 1065.26 1457.22 Q1068.64 1460.39 1068.64 1465.8 Q1068.64 1471.38 1065.17 1474.48 Q1061.7 1477.56 1055.38 1477.56 Q1053.2 1477.56 1050.94 1477.19 Q1048.69 1476.82 1046.28 1476.08 L1046.28 1471.38 Q1048.37 1472.52 1050.59 1473.07 Q1052.81 1473.63 1055.29 1473.63 Q1059.29 1473.63 1061.63 1471.52 Q1063.97 1469.42 1063.97 1465.8 Q1063.97 1462.19 1061.63 1460.09 Q1059.29 1457.98 1055.29 1457.98 Q1053.41 1457.98 1051.54 1458.4 Q1049.69 1458.81 1047.74 1459.69 L1047.74 1442.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M1489.63 1457.75 Q1486.48 1457.75 1484.63 1459.9 Q1482.8 1462.05 1482.8 1465.8 Q1482.8 1469.53 1484.63 1471.71 Q1486.48 1473.86 1489.63 1473.86 Q1492.78 1473.86 1494.61 1471.71 Q1496.46 1469.53 1496.46 1465.8 Q1496.46 1462.05 1494.61 1459.9 Q1492.78 1457.75 1489.63 1457.75 M1498.92 1443.1 L1498.92 1447.36 Q1497.16 1446.52 1495.35 1446.08 Q1493.57 1445.64 1491.81 1445.64 Q1487.18 1445.64 1484.73 1448.77 Q1482.3 1451.89 1481.95 1458.21 Q1483.31 1456.2 1485.37 1455.13 Q1487.43 1454.04 1489.91 1454.04 Q1495.12 1454.04 1498.13 1457.22 Q1501.16 1460.36 1501.16 1465.8 Q1501.16 1471.13 1498.01 1474.35 Q1494.86 1477.56 1489.63 1477.56 Q1483.64 1477.56 1480.47 1472.98 Q1477.3 1468.37 1477.3 1459.65 Q1477.3 1451.45 1481.18 1446.59 Q1485.07 1441.71 1491.62 1441.71 Q1493.38 1441.71 1495.17 1442.05 Q1496.97 1442.4 1498.92 1443.1 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M1909.88 1442.33 L1932.1 1442.33 L1932.1 1444.32 L1919.56 1476.89 L1914.67 1476.89 L1926.48 1446.27 L1909.88 1446.27 L1909.88 1442.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M2352.76 1460.48 Q2349.42 1460.48 2347.5 1462.26 Q2345.6 1464.04 2345.6 1467.17 Q2345.6 1470.29 2347.5 1472.08 Q2349.42 1473.86 2352.76 1473.86 Q2356.09 1473.86 2358.01 1472.08 Q2359.93 1470.27 2359.93 1467.17 Q2359.93 1464.04 2358.01 1462.26 Q2356.11 1460.48 2352.76 1460.48 M2348.08 1458.49 Q2345.07 1457.75 2343.38 1455.69 Q2341.71 1453.63 2341.71 1450.67 Q2341.71 1446.52 2344.65 1444.11 Q2347.62 1441.71 2352.76 1441.71 Q2357.92 1441.71 2360.86 1444.11 Q2363.8 1446.52 2363.8 1450.67 Q2363.8 1453.63 2362.11 1455.69 Q2360.44 1457.75 2357.45 1458.49 Q2360.83 1459.28 2362.71 1461.57 Q2364.61 1463.86 2364.61 1467.17 Q2364.61 1472.19 2361.53 1474.88 Q2358.47 1477.56 2352.76 1477.56 Q2347.04 1477.56 2343.96 1474.88 Q2340.9 1472.19 2340.9 1467.17 Q2340.9 1463.86 2342.8 1461.57 Q2344.7 1459.28 2348.08 1458.49 M2346.37 1451.11 Q2346.37 1453.79 2348.03 1455.29 Q2349.72 1456.8 2352.76 1456.8 Q2355.77 1456.8 2357.45 1455.29 Q2359.17 1453.79 2359.17 1451.11 Q2359.17 1448.42 2357.45 1446.92 Q2355.77 1445.41 2352.76 1445.41 Q2349.72 1445.41 2348.03 1446.92 Q2346.37 1448.42 2346.37 1451.11 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="193.936,1414.49 193.936,119.2 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="193.936,1414.49 212.834,1414.49 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="193.936,1198.61 212.834,1198.61 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="193.936,982.728 212.834,982.728 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="193.936,766.846 212.834,766.846 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="193.936,550.964 212.834,550.964 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="193.936,335.082 212.834,335.082 "/>
<polyline clip-path="url(#clip330)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="193.936,119.2 212.834,119.2 "/>
<path clip-path="url(#clip330)" d="M51.9875 1414.94 L81.6633 1414.94 L81.6633 1418.88 L51.9875 1418.88 L51.9875 1414.94 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M92.566 1427.84 L100.205 1427.84 L100.205 1401.47 L91.8947 1403.14 L91.8947 1398.88 L100.159 1397.21 L104.834 1397.21 L104.834 1427.84 L112.473 1427.84 L112.473 1431.77 L92.566 1431.77 L92.566 1427.84 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M121.918 1425.89 L126.802 1425.89 L126.802 1431.77 L121.918 1431.77 L121.918 1425.89 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M137.033 1397.21 L155.39 1397.21 L155.39 1401.15 L141.316 1401.15 L141.316 1409.62 Q142.334 1409.27 143.353 1409.11 Q144.371 1408.92 145.39 1408.92 Q151.177 1408.92 154.556 1412.1 Q157.936 1415.27 157.936 1420.68 Q157.936 1426.26 154.464 1429.36 Q150.992 1432.44 144.672 1432.44 Q142.496 1432.44 140.228 1432.07 Q137.982 1431.7 135.575 1430.96 L135.575 1426.26 Q137.658 1427.4 139.881 1427.95 Q142.103 1428.51 144.58 1428.51 Q148.584 1428.51 150.922 1426.4 Q153.26 1424.3 153.26 1420.68 Q153.26 1417.07 150.922 1414.97 Q148.584 1412.86 144.58 1412.86 Q142.705 1412.86 140.83 1413.28 Q138.978 1413.69 137.033 1414.57 L137.033 1397.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M50.9921 1199.06 L80.6679 1199.06 L80.6679 1203 L50.9921 1203 L50.9921 1199.06 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M91.5706 1211.95 L99.2095 1211.95 L99.2095 1185.59 L90.8993 1187.26 L90.8993 1183 L99.1632 1181.33 L103.839 1181.33 L103.839 1211.95 L111.478 1211.95 L111.478 1215.89 L91.5706 1215.89 L91.5706 1211.95 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M120.922 1210.01 L125.807 1210.01 L125.807 1215.89 L120.922 1215.89 L120.922 1210.01 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M145.992 1184.41 Q142.381 1184.41 140.552 1187.97 Q138.746 1191.52 138.746 1198.64 Q138.746 1205.75 140.552 1209.32 Q142.381 1212.86 145.992 1212.86 Q149.626 1212.86 151.431 1209.32 Q153.26 1205.75 153.26 1198.64 Q153.26 1191.52 151.431 1187.97 Q149.626 1184.41 145.992 1184.41 M145.992 1180.7 Q151.802 1180.7 154.857 1185.31 Q157.936 1189.89 157.936 1198.64 Q157.936 1207.37 154.857 1211.98 Q151.802 1216.56 145.992 1216.56 Q140.181 1216.56 137.103 1211.98 Q134.047 1207.37 134.047 1198.64 Q134.047 1189.89 137.103 1185.31 Q140.181 1180.7 145.992 1180.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M51.9875 983.179 L81.6633 983.179 L81.6633 987.115 L51.9875 987.115 L51.9875 983.179 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M101.756 968.527 Q98.1447 968.527 96.316 972.091 Q94.5104 975.633 94.5104 982.763 Q94.5104 989.869 96.316 993.434 Q98.1447 996.976 101.756 996.976 Q105.39 996.976 107.196 993.434 Q109.024 989.869 109.024 982.763 Q109.024 975.633 107.196 972.091 Q105.39 968.527 101.756 968.527 M101.756 964.823 Q107.566 964.823 110.621 969.429 Q113.7 974.013 113.7 982.763 Q113.7 991.49 110.621 996.096 Q107.566 1000.68 101.756 1000.68 Q95.9456 1000.68 92.8669 996.096 Q89.8114 991.49 89.8114 982.763 Q89.8114 974.013 92.8669 969.429 Q95.9456 964.823 101.756 964.823 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M121.918 994.128 L126.802 994.128 L126.802 1000.01 L121.918 1000.01 L121.918 994.128 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M137.033 965.448 L155.39 965.448 L155.39 969.383 L141.316 969.383 L141.316 977.855 Q142.334 977.508 143.353 977.346 Q144.371 977.161 145.39 977.161 Q151.177 977.161 154.556 980.332 Q157.936 983.503 157.936 988.92 Q157.936 994.499 154.464 997.601 Q150.992 1000.68 144.672 1000.68 Q142.496 1000.68 140.228 1000.31 Q137.982 999.939 135.575 999.198 L135.575 994.499 Q137.658 995.633 139.881 996.189 Q142.103 996.744 144.58 996.744 Q148.584 996.744 150.922 994.638 Q153.26 992.531 153.26 988.92 Q153.26 985.309 150.922 983.203 Q148.584 981.096 144.58 981.096 Q142.705 981.096 140.83 981.513 Q138.978 981.929 137.033 982.809 L137.033 965.448 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M100.76 752.645 Q97.1493 752.645 95.3206 756.209 Q93.515 759.751 93.515 766.881 Q93.515 773.987 95.3206 777.552 Q97.1493 781.094 100.76 781.094 Q104.395 781.094 106.2 777.552 Q108.029 773.987 108.029 766.881 Q108.029 759.751 106.2 756.209 Q104.395 752.645 100.76 752.645 M100.76 748.941 Q106.571 748.941 109.626 753.547 Q112.705 758.131 112.705 766.881 Q112.705 775.608 109.626 780.214 Q106.571 784.797 100.76 784.797 Q94.9502 784.797 91.8715 780.214 Q88.816 775.608 88.816 766.881 Q88.816 758.131 91.8715 753.547 Q94.9502 748.941 100.76 748.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M120.922 778.246 L125.807 778.246 L125.807 784.126 L120.922 784.126 L120.922 778.246 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M145.992 752.645 Q142.381 752.645 140.552 756.209 Q138.746 759.751 138.746 766.881 Q138.746 773.987 140.552 777.552 Q142.381 781.094 145.992 781.094 Q149.626 781.094 151.431 777.552 Q153.26 773.987 153.26 766.881 Q153.26 759.751 151.431 756.209 Q149.626 752.645 145.992 752.645 M145.992 748.941 Q151.802 748.941 154.857 753.547 Q157.936 758.131 157.936 766.881 Q157.936 775.608 154.857 780.214 Q151.802 784.797 145.992 784.797 Q140.181 784.797 137.103 780.214 Q134.047 775.608 134.047 766.881 Q134.047 758.131 137.103 753.547 Q140.181 748.941 145.992 748.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M101.756 536.763 Q98.1447 536.763 96.316 540.327 Q94.5104 543.869 94.5104 550.999 Q94.5104 558.105 96.316 561.67 Q98.1447 565.212 101.756 565.212 Q105.39 565.212 107.196 561.67 Q109.024 558.105 109.024 550.999 Q109.024 543.869 107.196 540.327 Q105.39 536.763 101.756 536.763 M101.756 533.059 Q107.566 533.059 110.621 537.665 Q113.7 542.249 113.7 550.999 Q113.7 559.726 110.621 564.332 Q107.566 568.915 101.756 568.915 Q95.9456 568.915 92.8669 564.332 Q89.8114 559.726 89.8114 550.999 Q89.8114 542.249 92.8669 537.665 Q95.9456 533.059 101.756 533.059 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M121.918 562.364 L126.802 562.364 L126.802 568.244 L121.918 568.244 L121.918 562.364 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M137.033 533.684 L155.39 533.684 L155.39 537.619 L141.316 537.619 L141.316 546.091 Q142.334 545.744 143.353 545.582 Q144.371 545.397 145.39 545.397 Q151.177 545.397 154.556 548.568 Q157.936 551.739 157.936 557.156 Q157.936 562.735 154.464 565.837 Q150.992 568.915 144.672 568.915 Q142.496 568.915 140.228 568.545 Q137.982 568.175 135.575 567.434 L135.575 562.735 Q137.658 563.869 139.881 564.425 Q142.103 564.98 144.58 564.98 Q148.584 564.98 150.922 562.874 Q153.26 560.767 153.26 557.156 Q153.26 553.545 150.922 551.439 Q148.584 549.332 144.58 549.332 Q142.705 549.332 140.83 549.749 Q138.978 550.165 137.033 551.045 L137.033 533.684 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M91.5706 348.427 L99.2095 348.427 L99.2095 322.061 L90.8993 323.728 L90.8993 319.469 L99.1632 317.802 L103.839 317.802 L103.839 348.427 L111.478 348.427 L111.478 352.362 L91.5706 352.362 L91.5706 348.427 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M120.922 346.482 L125.807 346.482 L125.807 352.362 L120.922 352.362 L120.922 346.482 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M145.992 320.881 Q142.381 320.881 140.552 324.445 Q138.746 327.987 138.746 335.117 Q138.746 342.223 140.552 345.788 Q142.381 349.33 145.992 349.33 Q149.626 349.33 151.431 345.788 Q153.26 342.223 153.26 335.117 Q153.26 327.987 151.431 324.445 Q149.626 320.881 145.992 320.881 M145.992 317.177 Q151.802 317.177 154.857 321.783 Q157.936 326.367 157.936 335.117 Q157.936 343.844 154.857 348.45 Q151.802 353.033 145.992 353.033 Q140.181 353.033 137.103 348.45 Q134.047 343.844 134.047 335.117 Q134.047 326.367 137.103 321.783 Q140.181 317.177 145.992 317.177 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M92.566 132.545 L100.205 132.545 L100.205 106.179 L91.8947 107.846 L91.8947 103.587 L100.159 101.92 L104.834 101.92 L104.834 132.545 L112.473 132.545 L112.473 136.48 L92.566 136.48 L92.566 132.545 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M121.918 130.6 L126.802 130.6 L126.802 136.48 L121.918 136.48 L121.918 130.6 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip330)" d="M137.033 101.92 L155.39 101.92 L155.39 105.855 L141.316 105.855 L141.316 114.327 Q142.334 113.98 143.353 113.818 Q144.371 113.633 145.39 113.633 Q151.177 113.633 154.556 116.804 Q157.936 119.975 157.936 125.392 Q157.936 130.971 154.464 134.073 Q150.992 137.151 144.672 137.151 Q142.496 137.151 140.228 136.781 Q137.982 136.411 135.575 135.67 L135.575 130.971 Q137.658 132.105 139.881 132.661 Q142.103 133.216 144.58 133.216 Q148.584 133.216 150.922 131.11 Q153.26 129.003 153.26 125.392 Q153.26 121.781 150.922 119.675 Q148.584 117.568 144.58 117.568 Q142.705 117.568 140.83 117.985 Q138.978 118.401 137.033 119.281 L137.033 101.92 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip332)" d="M1489.23 766.846 L1485.68 711.633 L1475.11 657.327 L1457.67 604.819 L1433.67 554.972 L1403.49 508.603 L1367.62 466.475 L1326.66 429.279 L1281.29 397.626 L1232.23 372.036 L1180.31 352.928 L1126.37 340.616 L1071.3 335.304 L1016 337.077 L961.387 345.907 L908.348 361.649 L857.757 384.044 L810.445 412.725 L767.189 447.221 L728.699 486.964 L695.608 531.304 L668.458 579.511 L647.696 630.794 L633.662 684.311 L626.587 739.183 L626.587 794.509 L633.662 849.381 L647.696 902.898 L668.458 954.181 L695.608 1002.39 L728.699 1046.73 L767.189 1086.47 L810.445 1120.97 L857.757 1149.65 L908.348 1172.04 L961.387 1187.78 L1016 1196.61 L1071.3 1198.39 L1126.37 1193.08 L1180.31 1180.76 L1232.23 1161.66 L1281.29 1136.07 L1326.66 1104.41 L1367.62 1067.22 L1403.49 1025.09 L1433.67 978.72 L1457.67 928.873 L1475.11 876.365 L1485.68 822.059 L1489.23 766.846 L1489.23 766.846  Z" fill="#009af9" fill-rule="evenodd" fill-opacity="0.2"/>
<polyline clip-path="url(#clip332)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1489.23,766.846 1485.68,711.633 1475.11,657.327 1457.67,604.819 1433.67,554.972 1403.49,508.603 1367.62,466.475 1326.66,429.279 1281.29,397.626 1232.23,372.036 1180.31,352.928 1126.37,340.616 1071.3,335.304 1016,337.077 961.387,345.907 908.348,361.649 857.757,384.044 810.445,412.725 767.189,447.221 728.699,486.964 695.608,531.304 668.458,579.511 647.696,630.794 633.662,684.311 626.587,739.183 626.587,794.509 633.662,849.381 647.696,902.898 668.458,954.181 695.608,1002.39 728.699,1046.73 767.189,1086.47 810.445,1120.97 857.757,1149.65 908.348,1172.04 961.387,1187.78 1016,1196.61 1071.3,1198.39 1126.37,1193.08 1180.31,1180.76 1232.23,1161.66 1281.29,1136.07 1326.66,1104.41 1367.62,1067.22 1403.49,1025.09 1433.67,978.72 1457.67,928.873 1475.11,876.365 1485.68,822.059 1489.23,766.846 1489.23,766.846 "/>
<polyline clip-path="url(#clip332)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="3216.28,-7868.43 3216.28,9402.13 "/>
<polyline clip-path="url(#clip332)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="-5419,9402.13 -5419,-7868.43 "/>
<polyline clip-path="url(#clip332)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="7533.92,5084.49 -9736.64,5084.49 "/>
<polyline clip-path="url(#clip332)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="-9736.64,-3550.79 7533.92,-3550.79 "/>
<polyline clip-path="url(#clip332)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="-1101.36,1155.43 869.262,1155.43 1245.67,1155.43 3216.28,1155.43 "/>
<polyline clip-path="url(#clip332)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="-1101.36,1044.41 726.739,1044.41 1388.19,1044.41 3216.28,1044.41 "/>
<polyline clip-path="url(#clip332)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="-1101.36,933.384 659.111,933.384 1455.82,933.384 3216.28,933.384 "/>
<polyline clip-path="url(#clip332)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="-1101.36,822.358 629.284,822.358 1485.64,822.358 3216.28,822.358 "/>
<polyline clip-path="url(#clip332)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="-1101.36,711.333 629.284,711.333 1485.64,711.333 3216.28,711.333 "/>
<polyline clip-path="url(#clip332)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="-1101.36,600.308 659.111,600.308 1455.82,600.308 3216.28,600.308 "/>
<polyline clip-path="url(#clip332)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="-1101.36,489.283 726.739,489.283 1388.19,489.283 3216.28,489.283 "/>
<polyline clip-path="url(#clip332)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="-1101.36,378.258 869.262,378.258 1245.67,378.258 3216.28,378.258 "/>
</svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA q9&persist_js_state·has_pluto_hook_features§cell_id$f83da7f8-1acc-11eb-02d7-f33ffe518531depends_on_disabled_cells§runtime Mpublished_object_keysdepends_on_skipped_cells§errored$76ef6e46-1a06-11eb-03e3-9f40a86dc9aaqueued¤logsrunning¦outputbody)step_ray (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA pvpersist_js_state·has_pluto_hook_features§cell_id$76ef6e46-1a06-11eb-03e3-9f40a86dc9aadepends_on_disabled_cells§runtime 1published_object_keysdepends_on_skipped_cells§errored$c492a1f8-1a0c-11eb-2c38-5921c39cf5f8queued¤logsrunning¦outputbody}<bond def="sphere_test_ray_N" unique_id="YxLjD6/PW48B"><input 
type="range" 
min="1" 
step="1" 
max="30" 
value="4"

></bond>mimetext/htmlrootassigneelast_run_timestampA qİpersist_js_state·has_pluto_hook_features§cell_id$c492a1f8-1a0c-11eb-2c38-5921c39cf5f8depends_on_disabled_cells§runtime Zpublished_object_keysdepends_on_skipped_cells§errored$eabca8ce-1c73-11eb-26ad-271f6eba889bqueued¤logsrunning¦outputbody4plot_photon_arrow! (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA l(persist_js_state·has_pluto_hook_features§cell_id$eabca8ce-1c73-11eb-26ad-271f6eba889bdepends_on_disabled_cells§runtime %5-published_object_keysdepends_on_skipped_cells§errored$24b0d4ba-192c-11eb-0f66-e77b544b0510queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA kӰpersist_js_state·has_pluto_hook_features§cell_id$24b0d4ba-192c-11eb-0f66-e77b544b0510depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$1e109620-19c4-11eb-013e-1bc95c14c2baqueued¤logsrunning¦outputbodyr<div class="markdown"><h1><strong>Homework 7</strong>: <em>Raytracing in 2D</em></h1>
<p><code>18.S191</code>, fall 2020</p>
<p>This notebook contains <em>built-in, live answer checks</em>&#33; In some exercises you will see a coloured box, which runs a test case on your code, and provides feedback based on the result. Simply edit the code, run it, and the check runs again.</p>
<p><em>For MIT students:</em> there will also be some additional &#40;secret&#41; test cases that will be run as part of the grading process, and we will look at your notebook and write comments.</p>
<p>Feel free to ask questions&#33;</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gBpersist_js_state·has_pluto_hook_features§cell_id$1e109620-19c4-11eb-013e-1bc95c14c2badepends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$af5c6bea-1c9c-11eb-35ae-250337e4fc86queued¤logsrunning¦outputbodyprefixSphereelementscenterprefixFloat64elements7.0text/plain-6.0text/plaintypeArrayprefix_shortobjectidec1c81aae044f28a!application/vnd.pluto.tree+objectradius2text/plainior1.5text/plaintypestructprefix_shortSphereobjectidb59ae7be605c2d7cmime!application/vnd.pluto.tree+objectrootassigneetest_spherelast_run_timestampA pfSPpersist_js_state·has_pluto_hook_features§cell_id$af5c6bea-1c9c-11eb-35ae-250337e4fc86depends_on_disabled_cells§runtimeB7published_object_keysdepends_on_skipped_cells§errored$6fdf613c-193f-11eb-0029-957541d2ed4dqueued¤logsrunning¦outputbody1sphere_normal_at (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA pZpersist_js_state·has_pluto_hook_features§cell_id$6fdf613c-193f-11eb-0029-957541d2ed4ddepends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$ec57b460-19c3-11eb-2142-07cf28dcf02bqueued¤logsrunning¦outputbody.keep_working (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA qipersist_js_state·has_pluto_hook_features§cell_id$ec57b460-19c3-11eb-2142-07cf28dcf02bdepends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$e2a8d1d6-1add-11eb-0da1-cda1492a950cqueued¤logsrunning¦outputbody<div class="markdown"><h4>Exercise 3.1</h4>
<p>Just like with the <code>Wall</code>, our first step is to be able to find the intersection point of a ray of light and a sphere.</p>
<p>This one is a bit more challenging than the intersction with the wall, in particular because there are 3 potential outcomes of a line interacting with a sphere:</p>
<ul>
<li><p>No intersection</p>
</li>
<li><p>1 intersection</p>
</li>
<li><p>2 intersections</p>
</li>
</ul>
<p>As shown below:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gG"persist_js_state·has_pluto_hook_features§cell_id$e2a8d1d6-1add-11eb-0da1-cda1492a950cdepends_on_disabled_cells§runtime 2Mpublished_object_keysdepends_on_skipped_cells§errored$2c6defd0-1ca1-11eb-17db-d5cb498f3265queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA gF persist_js_state·has_pluto_hook_features§cell_id$2c6defd0-1ca1-11eb-17db-d5cb498f3265depends_on_disabled_cells§runtimeEwpublished_object_keysdepends_on_skipped_cells§errored$3f727a2c-1c80-11eb-3608-e55ccb9786d9queued¤logsrunning¦outputbodyٷ<div class="markdown"><p>For convenience, we define a function <code>step_ray</code> that combines these two actions: it finds the closest hit and computes the interaction.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gF5/persist_js_state·has_pluto_hook_features§cell_id$3f727a2c-1c80-11eb-3608-e55ccb9786d9depends_on_disabled_cells§runtime ,%published_object_keysdepends_on_skipped_cells§errored$d39f149e-1ac3-11eb-39a2-41c2030d7d49queued¤logsrunning¦outputbody<div class="markdown"><p>You see that <code>Wall</code> is <strong>included in the type</strong>. This will be very useful later, when we want to do something different <em>depending on the intersected object</em> &#40;wall, sphere, etc.&#41; using multiple dispatch. We can write one method for <code>::Intersection&#123;Sphere&#125;</code>, and one for <code>::Intersection&#123;Wall&#125;</code>.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gCS"persist_js_state·has_pluto_hook_features§cell_id$d39f149e-1ac3-11eb-39a2-41c2030d7d49depends_on_disabled_cells§runtime >published_object_keysdepends_on_skipped_cells§errored$d70380a4-1ad0-11eb-1184-f7e9b84a83adqueued¤logsrunning¦outputbodyf<div class="markdown"><p><br><br><br><br></p>
<h4>Exercise 1.4 - <em>which wall?</em></h4>
<p>We are now able to find the <code>Intersection</code> of a single photon with a single wall &#40;or detect a <code>Miss</code>&#41;. Great&#33; To make our simulation more interesting, we will combine <strong>multiple walls</strong> into a single scene.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gD^persist_js_state·has_pluto_hook_features§cell_id$d70380a4-1ad0-11eb-1184-f7e9b84a83addepends_on_disabled_cells§runtime ٵpublished_object_keysdepends_on_skipped_cells§errored$aa43ef1c-1941-11eb-04de-552719a08da0queued¤logsrunning¦outputbody4<div class="markdown"><br><br><br><br>
<h4>Exercise 1.2 - <em>how far is the wall?</em></h4>
<p>We will write a function that finds the location where a photon hits the wall. Instead of moving the photon forward in small timesteps until we reach the wall, we will compute the intersection directly, making use of the fact that the wall is a geometrically simple object.</p>
<p>Our function will return one of two possible types: a <code>Miss</code> or a <code>Intersection</code>. We define these types below, and both definitions need some elaboration.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gCypersist_js_state·has_pluto_hook_features§cell_id$aa43ef1c-1941-11eb-04de-552719a08da0depends_on_disabled_cells§runtime dpublished_object_keysdepends_on_skipped_cells§errored$7478330a-1c81-11eb-2f9f-099f1111032cqueued¤logsrunning¦outputbody<div class="markdown"><h4>Recap</h4>
<p>In Exercise 3 and 4, we will add a <code>Sphere</code> type, and our scene will consist of <code>Wall</code>s &#40;mirrors&#41; and <code>Sphere</code>s &#40;lenses&#41;. But before we move on, let&#39;s review what we have done so far.</p>
<p>Our main character is a <code>Photon</code>, which bounces around a scene made up of <code>Wall</code>s. </p>
<ol>
<li><p>Using <code>intersection&#40;photon, wall::Wall&#41;</code> we can find either an <code>Intersection</code> &#40;containing the <code>wall</code>, the <code>distance</code> and the <code>point</code>&#41; or a <code>Miss</code>.</p>
</li>
<li><p>Our scene is just a <code>Vector</code> or objects, and we compute the intersection between the photon and every object.</p>
</li>
<li><p>By adding <code>Base.isless</code> methods we have told Julia how to compare hit/miss results, and we get the closest one using <code>minimum&#40;all_intersections&#41;</code>.</p>
</li>
<li><p>We wrote a function <code>interact&#40;photon, hit::Intersection&#123;Wall&#125;&#41;</code> that returns a new photon after interacting with a wall collision.</p>
</li>
</ol>
<p>We repeat these four steps to trace a ray through the scene.</p>
<hr />
<p>In the next two exercises we will reuse some of the functionality that we have already written, using multiple dispatch&#33; For example, we add a method <code>intersection&#40;photon, sphere::Sphere&#41;</code>, and steps 2 and 3 magically also work with spheres&#33;</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gFpersist_js_state·has_pluto_hook_features§cell_id$7478330a-1c81-11eb-2f9f-099f1111032cdepends_on_disabled_cells§runtime Fpublished_object_keysdepends_on_skipped_cells§errored$bff04784-1acc-11eb-36c2-9335a58be23aqueued¤logsrunning¦outputbody/aberration_viz (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA q*ljpersist_js_state·has_pluto_hook_features§cell_id$bff04784-1acc-11eb-36c2-9335a58be23adepends_on_disabled_cells§runtime -published_object_keysdepends_on_skipped_cells§errored$c3090e4a-1a09-11eb-0f32-d3bbfd9992e0queued¤logsrunning¦outputbodyprefixAnyelementsprefixIntersection{Wall}elementsobjectprefixWallelementspositionprefixFloat64elementsmoretypeArrayprefix_shortobjectidcb5693189533ec6e!application/vnd.pluto.tree+objectnormalprefixFloat64elementsmoretypeArrayprefix_shortobjectid1ec3964025f3aa0!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidcfcbe35619eca23c!application/vnd.pluto.tree+objectdistance7.15542text/plainpointprefixFloat64elements6.2text/plain-6.4text/plaintypeArrayprefix_shortobjectid34cbf1fff174f98!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectid173dde74287e2c2c!application/vnd.pluto.tree+objectprefixIntersection{Wall}elementsobjectprefixWallelementspositionprefixFloat64elementsmoretypeArrayprefix_shortobjectidda9ea7f12775ea2!application/vnd.pluto.tree+objectnormalprefixFloat64elementsmoretypeArrayprefix_shortobjectid1c5e29cc2fe01ed4!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectid8949e5650f0de9e3!application/vnd.pluto.tree+objectdistance11.1803text/plainpointprefixFloat64elements8.0text/plain-10.0text/plaintypeArrayprefix_shortobjectid435544f97f28621e!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectid66741d1c64cd92da!application/vnd.pluto.tree+objectprefixIntersection{Wall}elementsobjectprefixWallelementspositionprefixFloat64elementsmoretypeArrayprefix_shortobjectidfffdf189f71f6f9c!application/vnd.pluto.tree+objectnormalprefixFloat64elementsmoretypeArrayprefix_shortobjectid39926e9eea486b0d!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidc629b1cc33955b09!application/vnd.pluto.tree+objectdistance15.6525text/plainpointprefixFloat64elements10.0text/plain-14.0text/plaintypeArrayprefix_shortobjectid4191436c7b9f5828!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectid549e473e39f9430b!application/vnd.pluto.tree+objectprefixMisselementstypestructprefix_shortMissobjectidffffffffcd54a1ce!application/vnd.pluto.tree+objectprefixMisselementstypestructprefix_shortMissobjectidffffffffcd54a1ce!application/vnd.pluto.tree+objecttypeArrayprefix_shortobjectid1b55908b930f9927mime!application/vnd.pluto.tree+objectrootassigneelast_run_timestampA pI!persist_js_state·has_pluto_hook_features§cell_id$c3090e4a-1a09-11eb-0f32-d3bbfd9992e0depends_on_disabled_cells§runtime <^ȵpublished_object_keysdepends_on_skipped_cells§errored$5f551588-1ac4-11eb-1f86-197442f1ef1dqueued¤logsrunning¦outputbody<div class="markdown"><p>In our simulations, we will enclose our scene in a box of <strong>four walls</strong>, to make sure that no rays can escape the scene. We have written this box &#40;i.e. vector of walls&#41; below, but we are still missing the roof.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gBW2persist_js_state·has_pluto_hook_features§cell_id$5f551588-1ac4-11eb-1f86-197442f1ef1ddepends_on_disabled_cells§runtime ֵpublished_object_keysdepends_on_skipped_cells§errored$584ce620-1935-11eb-177a-f75d9ad8a399queued¤logsrunning¦outputbodyE<div class="markdown"><p><br><br><br><br></p>
<h2><strong>Exercise 4:</strong> <em>Lenses</em></h2>
<p>For this, we will start with refraction from the surface of water and then move on to a spherical lens. </p>
<p>So, how does refraction work? Well, every time light enters a new medium that is more dense than air, it will bend towards the normal to the surface, like so:</p>
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Snells_law2.svg/800px-Snells_law2.svg.png" controls="" type="image/png" width="200" style="display: block; margin: auto;"></img>
</div>mimetext/htmlrootassigneelast_run_timestampA ppersist_js_state·has_pluto_hook_features§cell_id$584ce620-1935-11eb-177a-f75d9ad8a399depends_on_disabled_cells§runtime r[published_object_keysdepends_on_skipped_cells§errored$c00eb0a6-cab2-11ea-3887-070ebd8d56e2queued¤logsrunning¦outputbodyً<div class="markdown"><h4>Spherical aberration</h4>
<p>Now we can put it all together into an image of spherical aberration&#33;</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gHWpersist_js_state·has_pluto_hook_features§cell_id$c00eb0a6-cab2-11ea-3887-070ebd8d56e2depends_on_disabled_cells§runtime {published_object_keysdepends_on_skipped_cells§errored$7f286ccc-1c75-11eb-1270-95a87840b300queued¤logsrunning¦outputbodyل<bond def="dizzy_angle" unique_id="jzbhwMMcxfrg"><input 
type="range" 
min="0.0" 
step="0.0001" 
max="6.2831" 
value="2.2"

></bond>mimetext/htmlrootassigneelast_run_timestampA l&persist_js_state·has_pluto_hook_features§cell_id$7f286ccc-1c75-11eb-1270-95a87840b300depends_on_disabled_cells§runtime0	published_object_keysdepends_on_skipped_cells§errored$0787f130-1aca-11eb-24b4-2ff2ddd0bc48queued¤logsrunning¦outputbodyـ<div class="markdown"><div class="admonition correct"><p class="admonition-title">Got it!</p><p>Splendid&#33;</p>

</div>
</div>mimetext/htmlrootassigneelast_run_timestampA qfpersist_js_state·has_pluto_hook_features§cell_id$0787f130-1aca-11eb-24b4-2ff2ddd0bc48depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$ec5d59b0-19c3-11eb-0206-cbd1a5415c28queued¤logsrunning¦outputbodyprefixMarkdown.MDelements2<div class="markdown"><p>Fantastic&#33;</p>
</div>text/html1<div class="markdown"><p>Splendid&#33;</p>
</div>text/html.<div class="markdown"><p>Great&#33;</p>
</div>text/html+<div class="markdown"><p>Yay ❤</p>
</div>text/html3<div class="markdown"><p>Great&#33; 🎉</p>
</div>text/html2<div class="markdown"><p>Well done&#33;</p>
</div>text/html3<div class="markdown"><p>Keep it up&#33;</p>
</div>text/html1<div class="markdown"><p>Good job&#33;</p>
</div>text/html	0<div class="markdown"><p>Awesome&#33;</p>
</div>text/html
A<div class="markdown"><p>You got the right answer&#33;</p>
</div>text/htmlJ<div class="markdown"><p>Let&#39;s move on to the next section.</p>
</div>text/htmltypeArrayprefix_shortobjectid84fc0b17856a9481mime!application/vnd.pluto.tree+objectrootassigneeyayslast_run_timestampA qvC[persist_js_state·has_pluto_hook_features§cell_id$ec5d59b0-19c3-11eb-0206-cbd1a5415c28depends_on_disabled_cells§runtime $published_object_keysdepends_on_skipped_cells§errored$f76ab794-1ac9-11eb-26e3-b9d0baa05d49queued¤logsrunning¦outputbody6intersection_distance (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA lV}persist_js_state·has_pluto_hook_features§cell_id$f76ab794-1ac9-11eb-26e3-b9d0baa05d49depends_on_disabled_cells§runtime Fpublished_object_keysdepends_on_skipped_cells§errored$e1cb1622-1a0c-11eb-224c-559af7b90f49queued¤logsrunning¦outputbody*interact (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA pްpersist_js_state·has_pluto_hook_features§cell_id$e1cb1622-1a0c-11eb-224c-559af7b90f49depends_on_disabled_cells§runtime   published_object_keysdepends_on_skipped_cells§errored$dad5acfa-194c-11eb-27f9-01f40342a681queued¤logsrunning¦outputbodyt<div class="markdown"><h4>Exercise 2.1 - <em>reflect</em></h4>
<p>For this one, we need to implement a reflection function. This one is way easier than refraction. All we need to do is find how much of the light is moving in the direction of the surface&#39;s normal and subtract that twice.</p>
<p class="tex">$$\ell_2 &#61; \ell_1 - 2&#40;\ell_1\cdot \hat n&#41;\hat n$$</p>
<p>Where <span class="tex">$\ell_1$</span> and <span class="tex">$\ell_2$</span> are the photon directions before and after the reflection off a surface with normal <span class="tex">$\hat&#123;n&#125;$</span>. Let&#39;s write that in code:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gEpersist_js_state·has_pluto_hook_features§cell_id$dad5acfa-194c-11eb-27f9-01f40342a681depends_on_disabled_cells§runtime fepublished_object_keysdepends_on_skipped_cells§errored$3cd36ac0-1a09-11eb-1818-75b36e67594aqueued¤logsrunning¦outputbodyف<bond def="mirror_test_ray_N" unique_id="2RkL/zTI&#43;beF"><input 
type="range" 
min="1" 
step="1" 
max="30" 
value="4"

></bond>mimetext/htmlrootassigneelast_run_timestampA lpersist_js_state·has_pluto_hook_features§cell_id$3cd36ac0-1a09-11eb-1818-75b36e67594adepends_on_disabled_cells§runtime Kpublished_object_keysdepends_on_skipped_cells§errored$55187168-1c78-11eb-1182-ab4336b577a4queued¤logsrunning¦outputbodyprefixPhotonelementspprefixFloat64elements3.0text/plain0.0text/plaintypeArrayprefix_shortobjectid5047878b21203e6d!application/vnd.pluto.tree+objectlprefixFloat64elements0.447214text/plain-0.894427text/plaintypeArrayprefix_shortobjectidc28aa07785a7b748!application/vnd.pluto.tree+objectior1.0text/plaintypestructprefix_shortPhotonobjectid25f2b604401d1af5mime!application/vnd.pluto.tree+objectrootassigneephiliplast_run_timestampA lpersist_js_state·has_pluto_hook_features§cell_id$55187168-1c78-11eb-1182-ab4336b577a4depends_on_disabled_cells§runtimermpublished_object_keysdepends_on_skipped_cells§errored$b6614d80-194b-11eb-1edb-dba3c29672f8queued¤logsrunning¦outputbody <div class="markdown"><h4>Exercise 2.2 - <em>step</em></h4>
<p>Our event-driven simulation is a stepping method, but instead of taking small steps in time, we take large steps from one collision event to the next.</p>
<p>👉 Write a function <code>interact</code> that takes a photon and a <code>hit::Intersection&#123;Wall&#125;</code> and returns a new <code>Photon</code> at the next step. The new photon is located at the hit point, its direction is reflected off the wall&#39;s normal and the <code>photon.ior</code> is reused.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gEkpersist_js_state·has_pluto_hook_features§cell_id$b6614d80-194b-11eb-1edb-dba3c29672f8depends_on_disabled_cells§runtime apublished_object_keysdepends_on_skipped_cells§errored$e055262c-1c73-11eb-14de-2f537a19b012queued¤logsrunning¦outputbodyl<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600">
<defs>
  <clipPath id="clip050">
    <rect x="0" y="0" width="2400" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip050)" d="M0 1600 L2400 1600 L2400 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip051">
    <rect x="480" y="0" width="1681" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip050)" d="M178.867 1486.45 L2352.76 1486.45 L2352.76 47.2441 L178.867 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip052">
    <rect x="178" y="47" width="2175" height="1440"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="247.507,1486.45 247.507,47.2441 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="586.942,1486.45 586.942,47.2441 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="926.376,1486.45 926.376,47.2441 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1265.81,1486.45 1265.81,47.2441 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1605.25,1486.45 1605.25,47.2441 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1944.68,1486.45 1944.68,47.2441 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2284.12,1486.45 2284.12,47.2441 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,1445.72 2352.76,1445.72 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,1106.28 2352.76,1106.28 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,766.846 2352.76,766.846 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,427.411 2352.76,427.411 "/>
<polyline clip-path="url(#clip052)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,87.9763 2352.76,87.9763 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1486.45 2352.76,1486.45 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="247.507,1486.45 247.507,1467.55 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="586.942,1486.45 586.942,1467.55 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="926.376,1486.45 926.376,1467.55 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1265.81,1486.45 1265.81,1467.55 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1605.25,1486.45 1605.25,1467.55 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1944.68,1486.45 1944.68,1467.55 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2284.12,1486.45 2284.12,1467.55 "/>
<path clip-path="url(#clip050)" d="M201.569 1532.02 L231.245 1532.02 L231.245 1535.95 L201.569 1535.95 L201.569 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M255.504 1530.21 Q258.861 1530.93 260.736 1533.2 Q262.634 1535.47 262.634 1538.8 Q262.634 1543.92 259.115 1546.72 Q255.597 1549.52 249.115 1549.52 Q246.94 1549.52 244.625 1549.08 Q242.333 1548.66 239.879 1547.81 L239.879 1543.29 Q241.824 1544.43 244.139 1545.01 Q246.453 1545.58 248.977 1545.58 Q253.375 1545.58 255.666 1543.85 Q257.981 1542.11 257.981 1538.8 Q257.981 1535.75 255.828 1534.03 Q253.699 1532.3 249.879 1532.3 L245.852 1532.3 L245.852 1528.45 L250.065 1528.45 Q253.514 1528.45 255.342 1527.09 Q257.171 1525.7 257.171 1523.11 Q257.171 1520.45 255.273 1519.03 Q253.398 1517.6 249.879 1517.6 Q247.958 1517.6 245.759 1518.01 Q243.56 1518.43 240.921 1519.31 L240.921 1515.14 Q243.583 1514.4 245.898 1514.03 Q248.236 1513.66 250.296 1513.66 Q255.62 1513.66 258.722 1516.09 Q261.824 1518.5 261.824 1522.62 Q261.824 1525.49 260.18 1527.48 Q258.537 1529.45 255.504 1530.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M281.5 1517.37 Q277.888 1517.37 276.06 1520.93 Q274.254 1524.47 274.254 1531.6 Q274.254 1538.71 276.06 1542.27 Q277.888 1545.82 281.5 1545.82 Q285.134 1545.82 286.939 1542.27 Q288.768 1538.71 288.768 1531.6 Q288.768 1524.47 286.939 1520.93 Q285.134 1517.37 281.5 1517.37 M281.5 1513.66 Q287.31 1513.66 290.365 1518.27 Q293.444 1522.85 293.444 1531.6 Q293.444 1540.33 290.365 1544.94 Q287.31 1549.52 281.5 1549.52 Q275.689 1549.52 272.611 1544.94 Q269.555 1540.33 269.555 1531.6 Q269.555 1522.85 272.611 1518.27 Q275.689 1513.66 281.5 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M541.004 1532.02 L570.68 1532.02 L570.68 1535.95 L541.004 1535.95 L541.004 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M584.8 1544.91 L601.12 1544.91 L601.12 1548.85 L579.175 1548.85 L579.175 1544.91 Q581.837 1542.16 586.421 1537.53 Q591.027 1532.88 592.208 1531.53 Q594.453 1529.01 595.333 1527.27 Q596.235 1525.51 596.235 1523.82 Q596.235 1521.07 594.291 1519.33 Q592.37 1517.6 589.268 1517.6 Q587.069 1517.6 584.615 1518.36 Q582.185 1519.13 579.407 1520.68 L579.407 1515.95 Q582.231 1514.82 584.685 1514.24 Q587.138 1513.66 589.175 1513.66 Q594.546 1513.66 597.74 1516.35 Q600.935 1519.03 600.935 1523.52 Q600.935 1525.65 600.124 1527.57 Q599.337 1529.47 597.231 1532.07 Q596.652 1532.74 593.55 1535.95 Q590.448 1539.15 584.8 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M620.934 1517.37 Q617.323 1517.37 615.495 1520.93 Q613.689 1524.47 613.689 1531.6 Q613.689 1538.71 615.495 1542.27 Q617.323 1545.82 620.934 1545.82 Q624.569 1545.82 626.374 1542.27 Q628.203 1538.71 628.203 1531.6 Q628.203 1524.47 626.374 1520.93 Q624.569 1517.37 620.934 1517.37 M620.934 1513.66 Q626.745 1513.66 629.8 1518.27 Q632.879 1522.85 632.879 1531.6 Q632.879 1540.33 629.8 1544.94 Q626.745 1549.52 620.934 1549.52 Q615.124 1549.52 612.046 1544.94 Q608.99 1540.33 608.99 1531.6 Q608.99 1522.85 612.046 1518.27 Q615.124 1513.66 620.934 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M880.439 1532.02 L910.115 1532.02 L910.115 1535.95 L880.439 1535.95 L880.439 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M921.018 1544.91 L928.656 1544.91 L928.656 1518.55 L920.346 1520.21 L920.346 1515.95 L928.61 1514.29 L933.286 1514.29 L933.286 1544.91 L940.925 1544.91 L940.925 1548.85 L921.018 1548.85 L921.018 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M960.369 1517.37 Q956.758 1517.37 954.93 1520.93 Q953.124 1524.47 953.124 1531.6 Q953.124 1538.71 954.93 1542.27 Q956.758 1545.82 960.369 1545.82 Q964.004 1545.82 965.809 1542.27 Q967.638 1538.71 967.638 1531.6 Q967.638 1524.47 965.809 1520.93 Q964.004 1517.37 960.369 1517.37 M960.369 1513.66 Q966.179 1513.66 969.235 1518.27 Q972.314 1522.85 972.314 1531.6 Q972.314 1540.33 969.235 1544.94 Q966.179 1549.52 960.369 1549.52 Q954.559 1549.52 951.48 1544.94 Q948.425 1540.33 948.425 1531.6 Q948.425 1522.85 951.48 1518.27 Q954.559 1513.66 960.369 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1265.81 1517.37 Q1262.2 1517.37 1260.37 1520.93 Q1258.57 1524.47 1258.57 1531.6 Q1258.57 1538.71 1260.37 1542.27 Q1262.2 1545.82 1265.81 1545.82 Q1269.45 1545.82 1271.25 1542.27 Q1273.08 1538.71 1273.08 1531.6 Q1273.08 1524.47 1271.25 1520.93 Q1269.45 1517.37 1265.81 1517.37 M1265.81 1513.66 Q1271.62 1513.66 1274.68 1518.27 Q1277.76 1522.85 1277.76 1531.6 Q1277.76 1540.33 1274.68 1544.94 Q1271.62 1549.52 1265.81 1549.52 Q1260 1549.52 1256.92 1544.94 Q1253.87 1540.33 1253.87 1531.6 Q1253.87 1522.85 1256.92 1518.27 Q1260 1513.66 1265.81 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1579.93 1544.91 L1587.57 1544.91 L1587.57 1518.55 L1579.26 1520.21 L1579.26 1515.95 L1587.53 1514.29 L1592.2 1514.29 L1592.2 1544.91 L1599.84 1544.91 L1599.84 1548.85 L1579.93 1548.85 L1579.93 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1619.29 1517.37 Q1615.67 1517.37 1613.85 1520.93 Q1612.04 1524.47 1612.04 1531.6 Q1612.04 1538.71 1613.85 1542.27 Q1615.67 1545.82 1619.29 1545.82 Q1622.92 1545.82 1624.73 1542.27 Q1626.55 1538.71 1626.55 1531.6 Q1626.55 1524.47 1624.73 1520.93 Q1622.92 1517.37 1619.29 1517.37 M1619.29 1513.66 Q1625.1 1513.66 1628.15 1518.27 Q1631.23 1522.85 1631.23 1531.6 Q1631.23 1540.33 1628.15 1544.94 Q1625.1 1549.52 1619.29 1549.52 Q1613.48 1549.52 1610.4 1544.94 Q1607.34 1540.33 1607.34 1531.6 Q1607.34 1522.85 1610.4 1518.27 Q1613.48 1513.66 1619.29 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1923.45 1544.91 L1939.77 1544.91 L1939.77 1548.85 L1917.83 1548.85 L1917.83 1544.91 Q1920.49 1542.16 1925.07 1537.53 Q1929.68 1532.88 1930.86 1531.53 Q1933.11 1529.01 1933.99 1527.27 Q1934.89 1525.51 1934.89 1523.82 Q1934.89 1521.07 1932.94 1519.33 Q1931.02 1517.6 1927.92 1517.6 Q1925.72 1517.6 1923.27 1518.36 Q1920.84 1519.13 1918.06 1520.68 L1918.06 1515.95 Q1920.88 1514.82 1923.34 1514.24 Q1925.79 1513.66 1927.83 1513.66 Q1933.2 1513.66 1936.39 1516.35 Q1939.59 1519.03 1939.59 1523.52 Q1939.59 1525.65 1938.78 1527.57 Q1937.99 1529.47 1935.88 1532.07 Q1935.31 1532.74 1932.2 1535.95 Q1929.1 1539.15 1923.45 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1959.59 1517.37 Q1955.98 1517.37 1954.15 1520.93 Q1952.34 1524.47 1952.34 1531.6 Q1952.34 1538.71 1954.15 1542.27 Q1955.98 1545.82 1959.59 1545.82 Q1963.22 1545.82 1965.03 1542.27 Q1966.86 1538.71 1966.86 1531.6 Q1966.86 1524.47 1965.03 1520.93 Q1963.22 1517.37 1959.59 1517.37 M1959.59 1513.66 Q1965.4 1513.66 1968.45 1518.27 Q1971.53 1522.85 1971.53 1531.6 Q1971.53 1540.33 1968.45 1544.94 Q1965.4 1549.52 1959.59 1549.52 Q1953.78 1549.52 1950.7 1544.94 Q1947.64 1540.33 1947.64 1531.6 Q1947.64 1522.85 1950.7 1518.27 Q1953.78 1513.66 1959.59 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2272.96 1530.21 Q2276.31 1530.93 2278.19 1533.2 Q2280.09 1535.47 2280.09 1538.8 Q2280.09 1543.92 2276.57 1546.72 Q2273.05 1549.52 2266.57 1549.52 Q2264.39 1549.52 2262.08 1549.08 Q2259.79 1548.66 2257.33 1547.81 L2257.33 1543.29 Q2259.28 1544.43 2261.59 1545.01 Q2263.91 1545.58 2266.43 1545.58 Q2270.83 1545.58 2273.12 1543.85 Q2275.44 1542.11 2275.44 1538.8 Q2275.44 1535.75 2273.28 1534.03 Q2271.15 1532.3 2267.33 1532.3 L2263.31 1532.3 L2263.31 1528.45 L2267.52 1528.45 Q2270.97 1528.45 2272.8 1527.09 Q2274.63 1525.7 2274.63 1523.11 Q2274.63 1520.45 2272.73 1519.03 Q2270.85 1517.6 2267.33 1517.6 Q2265.41 1517.6 2263.21 1518.01 Q2261.01 1518.43 2258.38 1519.31 L2258.38 1515.14 Q2261.04 1514.4 2263.35 1514.03 Q2265.69 1513.66 2267.75 1513.66 Q2273.07 1513.66 2276.18 1516.09 Q2279.28 1518.5 2279.28 1522.62 Q2279.28 1525.49 2277.63 1527.48 Q2275.99 1529.45 2272.96 1530.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2298.95 1517.37 Q2295.34 1517.37 2293.51 1520.93 Q2291.71 1524.47 2291.71 1531.6 Q2291.71 1538.71 2293.51 1542.27 Q2295.34 1545.82 2298.95 1545.82 Q2302.59 1545.82 2304.39 1542.27 Q2306.22 1538.71 2306.22 1531.6 Q2306.22 1524.47 2304.39 1520.93 Q2302.59 1517.37 2298.95 1517.37 M2298.95 1513.66 Q2304.76 1513.66 2307.82 1518.27 Q2310.9 1522.85 2310.9 1531.6 Q2310.9 1540.33 2307.82 1544.94 Q2304.76 1549.52 2298.95 1549.52 Q2293.14 1549.52 2290.06 1544.94 Q2287.01 1540.33 2287.01 1531.6 Q2287.01 1522.85 2290.06 1518.27 Q2293.14 1513.66 2298.95 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1486.45 178.867,47.2441 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1445.72 197.764,1445.72 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1106.28 197.764,1106.28 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,766.846 197.764,766.846 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,427.411 197.764,427.411 "/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,87.9763 197.764,87.9763 "/>
<path clip-path="url(#clip050)" d="M50.9921 1446.17 L80.6679 1446.17 L80.6679 1450.1 L50.9921 1450.1 L50.9921 1446.17 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M94.7882 1459.06 L111.108 1459.06 L111.108 1463 L89.1632 1463 L89.1632 1459.06 Q91.8252 1456.31 96.4085 1451.68 Q101.015 1447.02 102.196 1445.68 Q104.441 1443.16 105.321 1441.42 Q106.223 1439.66 106.223 1437.97 Q106.223 1435.22 104.279 1433.48 Q102.358 1431.75 99.2558 1431.75 Q97.0567 1431.75 94.603 1432.51 Q92.1725 1433.27 89.3947 1434.82 L89.3947 1430.1 Q92.2188 1428.97 94.6724 1428.39 Q97.1261 1427.81 99.1632 1427.81 Q104.534 1427.81 107.728 1430.5 Q110.922 1433.18 110.922 1437.67 Q110.922 1439.8 110.112 1441.72 Q109.325 1443.62 107.219 1446.21 Q106.64 1446.88 103.538 1450.1 Q100.436 1453.3 94.7882 1459.06 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M130.922 1431.51 Q127.311 1431.51 125.482 1435.08 Q123.677 1438.62 123.677 1445.75 Q123.677 1452.86 125.482 1456.42 Q127.311 1459.96 130.922 1459.96 Q134.556 1459.96 136.362 1456.42 Q138.191 1452.86 138.191 1445.75 Q138.191 1438.62 136.362 1435.08 Q134.556 1431.51 130.922 1431.51 M130.922 1427.81 Q136.732 1427.81 139.788 1432.42 Q142.867 1437 142.867 1445.75 Q142.867 1454.48 139.788 1459.08 Q136.732 1463.67 130.922 1463.67 Q125.112 1463.67 122.033 1459.08 Q118.978 1454.48 118.978 1445.75 Q118.978 1437 122.033 1432.42 Q125.112 1427.81 130.922 1427.81 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M50.9921 1106.73 L80.6679 1106.73 L80.6679 1110.67 L50.9921 1110.67 L50.9921 1106.73 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M91.5706 1119.63 L99.2095 1119.63 L99.2095 1093.26 L90.8993 1094.93 L90.8993 1090.67 L99.1632 1089 L103.839 1089 L103.839 1119.63 L111.478 1119.63 L111.478 1123.56 L91.5706 1123.56 L91.5706 1119.63 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M130.922 1092.08 Q127.311 1092.08 125.482 1095.64 Q123.677 1099.19 123.677 1106.32 Q123.677 1113.42 125.482 1116.99 Q127.311 1120.53 130.922 1120.53 Q134.556 1120.53 136.362 1116.99 Q138.191 1113.42 138.191 1106.32 Q138.191 1099.19 136.362 1095.64 Q134.556 1092.08 130.922 1092.08 M130.922 1088.38 Q136.732 1088.38 139.788 1092.98 Q142.867 1097.57 142.867 1106.32 Q142.867 1115.04 139.788 1119.65 Q136.732 1124.23 130.922 1124.23 Q125.112 1124.23 122.033 1119.65 Q118.978 1115.04 118.978 1106.32 Q118.978 1097.57 122.033 1092.98 Q125.112 1088.38 130.922 1088.38 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M130.922 752.645 Q127.311 752.645 125.482 756.209 Q123.677 759.751 123.677 766.881 Q123.677 773.987 125.482 777.552 Q127.311 781.094 130.922 781.094 Q134.556 781.094 136.362 777.552 Q138.191 773.987 138.191 766.881 Q138.191 759.751 136.362 756.209 Q134.556 752.645 130.922 752.645 M130.922 748.941 Q136.732 748.941 139.788 753.547 Q142.867 758.131 142.867 766.881 Q142.867 775.608 139.788 780.214 Q136.732 784.797 130.922 784.797 Q125.112 784.797 122.033 780.214 Q118.978 775.608 118.978 766.881 Q118.978 758.131 122.033 753.547 Q125.112 748.941 130.922 748.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M91.5706 440.756 L99.2095 440.756 L99.2095 414.39 L90.8993 416.057 L90.8993 411.798 L99.1632 410.131 L103.839 410.131 L103.839 440.756 L111.478 440.756 L111.478 444.691 L91.5706 444.691 L91.5706 440.756 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M130.922 413.21 Q127.311 413.21 125.482 416.775 Q123.677 420.316 123.677 427.446 Q123.677 434.552 125.482 438.117 Q127.311 441.659 130.922 441.659 Q134.556 441.659 136.362 438.117 Q138.191 434.552 138.191 427.446 Q138.191 420.316 136.362 416.775 Q134.556 413.21 130.922 413.21 M130.922 409.506 Q136.732 409.506 139.788 414.113 Q142.867 418.696 142.867 427.446 Q142.867 436.173 139.788 440.779 Q136.732 445.362 130.922 445.362 Q125.112 445.362 122.033 440.779 Q118.978 436.173 118.978 427.446 Q118.978 418.696 122.033 414.113 Q125.112 409.506 130.922 409.506 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M94.7882 101.321 L111.108 101.321 L111.108 105.256 L89.1632 105.256 L89.1632 101.321 Q91.8252 98.5665 96.4085 93.9369 Q101.015 89.2841 102.196 87.9416 Q104.441 85.4184 105.321 83.6823 Q106.223 81.9231 106.223 80.2333 Q106.223 77.4786 104.279 75.7425 Q102.358 74.0064 99.2558 74.0064 Q97.0567 74.0064 94.603 74.7703 Q92.1725 75.5342 89.3947 77.0851 L89.3947 72.3629 Q92.2188 71.2287 94.6724 70.65 Q97.1261 70.0713 99.1632 70.0713 Q104.534 70.0713 107.728 72.7565 Q110.922 75.4416 110.922 79.9323 Q110.922 82.062 110.112 83.9832 Q109.325 85.8814 107.219 88.474 Q106.64 89.1453 103.538 92.3628 Q100.436 95.5573 94.7882 101.321 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M130.922 73.775 Q127.311 73.775 125.482 77.3398 Q123.677 80.8814 123.677 88.011 Q123.677 95.1174 125.482 98.6822 Q127.311 102.224 130.922 102.224 Q134.556 102.224 136.362 98.6822 Q138.191 95.1174 138.191 88.011 Q138.191 80.8814 136.362 77.3398 Q134.556 73.775 130.922 73.775 M130.922 70.0713 Q136.732 70.0713 139.788 74.6777 Q142.867 79.261 142.867 88.011 Q142.867 96.7378 139.788 101.344 Q136.732 105.928 130.922 105.928 Q125.112 105.928 122.033 101.344 Q118.978 96.7378 118.978 88.011 Q118.978 79.261 122.033 74.6777 Q125.112 70.0713 130.922 70.0713 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip052)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1605.25,87.9763 1605.25,1445.72 "/>
<polyline clip-path="url(#clip052)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="926.376,1445.72 926.376,87.9763 "/>
<polyline clip-path="url(#clip052)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1944.68,1106.28 586.942,1106.28 "/>
<polyline clip-path="url(#clip052)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="586.942,427.411 1944.68,427.411 "/>
<polyline clip-path="url(#clip052)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1752.04,156.757 1322.68,1444.82 "/>
<polyline clip-path="url(#clip052)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1367.64,766.846 1428.36,888.286 "/>
<polyline clip-path="url(#clip052)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1428.36,848.037 1428.36,888.286 1396.16,864.136 "/>
<polyline clip-path="url(#clip052)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1428.36,888.286 1367.64,766.846 "/>
<circle clip-path="url(#clip052)" cx="1367.64" cy="766.846" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<circle clip-path="url(#clip052)" cx="1605.25" cy="1242.05" r="14.4" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<circle clip-path="url(#clip052)" cx="1537.36" cy="1106.28" r="14.4" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<circle clip-path="url(#clip052)" cx="1476.26" cy="984.084" r="14.4" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<path clip-path="url(#clip050)" d="M1744.73 613.618 L2280.29 613.618 L2280.29 95.2176 L1744.73 95.2176  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<polyline clip-path="url(#clip050)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1744.73,613.618 2280.29,613.618 2280.29,95.2176 1744.73,95.2176 1744.73,613.618 "/>
<polyline clip-path="url(#clip050)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1768.89,147.058 1913.81,147.058 "/>
<path clip-path="url(#clip050)" d="M1937.97 129.778 L1942.69 129.778 L1949.96 158.99 L1957.21 129.778 L1962.46 129.778 L1969.73 158.99 L1976.97 129.778 L1981.72 129.778 L1973.04 164.338 L1967.16 164.338 L1959.87 134.338 L1952.51 164.338 L1946.63 164.338 L1937.97 129.778 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1996.49 151.305 Q1991.33 151.305 1989.33 152.486 Q1987.34 153.666 1987.34 156.514 Q1987.34 158.782 1988.83 160.125 Q1990.33 161.444 1992.9 161.444 Q1996.44 161.444 1998.57 158.944 Q2000.72 156.421 2000.72 152.254 L2000.72 151.305 L1996.49 151.305 M2004.98 149.546 L2004.98 164.338 L2000.72 164.338 L2000.72 160.402 Q1999.26 162.763 1997.09 163.898 Q1994.91 165.009 1991.77 165.009 Q1987.78 165.009 1985.42 162.787 Q1983.08 160.541 1983.08 156.791 Q1983.08 152.416 1986 150.194 Q1988.94 147.972 1994.75 147.972 L2000.72 147.972 L2000.72 147.555 Q2000.72 144.615 1998.78 143.018 Q1996.86 141.398 1993.36 141.398 Q1991.14 141.398 1989.03 141.93 Q1986.93 142.463 1984.98 143.527 L1984.98 139.592 Q1987.32 138.69 1989.52 138.25 Q1991.72 137.787 1993.8 137.787 Q1999.43 137.787 2002.2 140.703 Q2004.98 143.62 2004.98 149.546 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2013.76 128.319 L2018.01 128.319 L2018.01 164.338 L2013.76 164.338 L2013.76 128.319 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2026.93 128.319 L2031.19 128.319 L2031.19 164.338 L2026.93 164.338 L2026.93 128.319 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip050)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1768.89,198.898 1913.81,198.898 "/>
<path clip-path="url(#clip050)" d="M1937.97 181.618 L1942.69 181.618 L1949.96 210.83 L1957.21 181.618 L1962.46 181.618 L1969.73 210.83 L1976.97 181.618 L1981.72 181.618 L1973.04 216.178 L1967.16 216.178 L1959.87 186.178 L1952.51 216.178 L1946.63 216.178 L1937.97 181.618 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1996.49 203.145 Q1991.33 203.145 1989.33 204.326 Q1987.34 205.506 1987.34 208.354 Q1987.34 210.622 1988.83 211.965 Q1990.33 213.284 1992.9 213.284 Q1996.44 213.284 1998.57 210.784 Q2000.72 208.261 2000.72 204.094 L2000.72 203.145 L1996.49 203.145 M2004.98 201.386 L2004.98 216.178 L2000.72 216.178 L2000.72 212.242 Q1999.26 214.603 1997.09 215.738 Q1994.91 216.849 1991.77 216.849 Q1987.78 216.849 1985.42 214.627 Q1983.08 212.381 1983.08 208.631 Q1983.08 204.256 1986 202.034 Q1988.94 199.812 1994.75 199.812 L2000.72 199.812 L2000.72 199.395 Q2000.72 196.455 1998.78 194.858 Q1996.86 193.238 1993.36 193.238 Q1991.14 193.238 1989.03 193.77 Q1986.93 194.303 1984.98 195.367 L1984.98 191.432 Q1987.32 190.53 1989.52 190.09 Q1991.72 189.627 1993.8 189.627 Q1999.43 189.627 2002.2 192.543 Q2004.98 195.46 2004.98 201.386 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2013.76 180.159 L2018.01 180.159 L2018.01 216.178 L2013.76 216.178 L2013.76 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2026.93 180.159 L2031.19 180.159 L2031.19 216.178 L2026.93 216.178 L2026.93 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip050)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1768.89,250.738 1913.81,250.738 "/>
<path clip-path="url(#clip050)" d="M1937.97 233.458 L1942.69 233.458 L1949.96 262.67 L1957.21 233.458 L1962.46 233.458 L1969.73 262.67 L1976.97 233.458 L1981.72 233.458 L1973.04 268.018 L1967.16 268.018 L1959.87 238.018 L1952.51 268.018 L1946.63 268.018 L1937.97 233.458 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1996.49 254.985 Q1991.33 254.985 1989.33 256.166 Q1987.34 257.346 1987.34 260.194 Q1987.34 262.462 1988.83 263.805 Q1990.33 265.124 1992.9 265.124 Q1996.44 265.124 1998.57 262.624 Q2000.72 260.101 2000.72 255.934 L2000.72 254.985 L1996.49 254.985 M2004.98 253.226 L2004.98 268.018 L2000.72 268.018 L2000.72 264.082 Q1999.26 266.443 1997.09 267.578 Q1994.91 268.689 1991.77 268.689 Q1987.78 268.689 1985.42 266.467 Q1983.08 264.221 1983.08 260.471 Q1983.08 256.096 1986 253.874 Q1988.94 251.652 1994.75 251.652 L2000.72 251.652 L2000.72 251.235 Q2000.72 248.295 1998.78 246.698 Q1996.86 245.078 1993.36 245.078 Q1991.14 245.078 1989.03 245.61 Q1986.93 246.143 1984.98 247.207 L1984.98 243.272 Q1987.32 242.37 1989.52 241.93 Q1991.72 241.467 1993.8 241.467 Q1999.43 241.467 2002.2 244.383 Q2004.98 247.3 2004.98 253.226 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2013.76 231.999 L2018.01 231.999 L2018.01 268.018 L2013.76 268.018 L2013.76 231.999 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2026.93 231.999 L2031.19 231.999 L2031.19 268.018 L2026.93 268.018 L2026.93 231.999 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip050)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1768.89,302.578 1913.81,302.578 "/>
<path clip-path="url(#clip050)" d="M1937.97 285.298 L1942.69 285.298 L1949.96 314.51 L1957.21 285.298 L1962.46 285.298 L1969.73 314.51 L1976.97 285.298 L1981.72 285.298 L1973.04 319.858 L1967.16 319.858 L1959.87 289.858 L1952.51 319.858 L1946.63 319.858 L1937.97 285.298 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1996.49 306.825 Q1991.33 306.825 1989.33 308.006 Q1987.34 309.186 1987.34 312.034 Q1987.34 314.302 1988.83 315.645 Q1990.33 316.964 1992.9 316.964 Q1996.44 316.964 1998.57 314.464 Q2000.72 311.941 2000.72 307.774 L2000.72 306.825 L1996.49 306.825 M2004.98 305.066 L2004.98 319.858 L2000.72 319.858 L2000.72 315.922 Q1999.26 318.283 1997.09 319.418 Q1994.91 320.529 1991.77 320.529 Q1987.78 320.529 1985.42 318.307 Q1983.08 316.061 1983.08 312.311 Q1983.08 307.936 1986 305.714 Q1988.94 303.492 1994.75 303.492 L2000.72 303.492 L2000.72 303.075 Q2000.72 300.135 1998.78 298.538 Q1996.86 296.918 1993.36 296.918 Q1991.14 296.918 1989.03 297.45 Q1986.93 297.983 1984.98 299.047 L1984.98 295.112 Q1987.32 294.21 1989.52 293.77 Q1991.72 293.307 1993.8 293.307 Q1999.43 293.307 2002.2 296.223 Q2004.98 299.14 2004.98 305.066 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2013.76 283.839 L2018.01 283.839 L2018.01 319.858 L2013.76 319.858 L2013.76 283.839 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2026.93 283.839 L2031.19 283.839 L2031.19 319.858 L2026.93 319.858 L2026.93 283.839 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip050)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1768.89,354.418 1913.81,354.418 "/>
<path clip-path="url(#clip050)" d="M1937.97 337.138 L1942.69 337.138 L1949.96 366.35 L1957.21 337.138 L1962.46 337.138 L1969.73 366.35 L1976.97 337.138 L1981.72 337.138 L1973.04 371.698 L1967.16 371.698 L1959.87 341.698 L1952.51 371.698 L1946.63 371.698 L1937.97 337.138 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1996.49 358.665 Q1991.33 358.665 1989.33 359.846 Q1987.34 361.026 1987.34 363.874 Q1987.34 366.142 1988.83 367.485 Q1990.33 368.804 1992.9 368.804 Q1996.44 368.804 1998.57 366.304 Q2000.72 363.781 2000.72 359.614 L2000.72 358.665 L1996.49 358.665 M2004.98 356.906 L2004.98 371.698 L2000.72 371.698 L2000.72 367.762 Q1999.26 370.123 1997.09 371.258 Q1994.91 372.369 1991.77 372.369 Q1987.78 372.369 1985.42 370.147 Q1983.08 367.901 1983.08 364.151 Q1983.08 359.776 1986 357.554 Q1988.94 355.332 1994.75 355.332 L2000.72 355.332 L2000.72 354.915 Q2000.72 351.975 1998.78 350.378 Q1996.86 348.758 1993.36 348.758 Q1991.14 348.758 1989.03 349.29 Q1986.93 349.823 1984.98 350.887 L1984.98 346.952 Q1987.32 346.05 1989.52 345.61 Q1991.72 345.147 1993.8 345.147 Q1999.43 345.147 2002.2 348.063 Q2004.98 350.98 2004.98 356.906 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2013.76 335.679 L2018.01 335.679 L2018.01 371.698 L2013.76 371.698 L2013.76 335.679 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2026.93 335.679 L2031.19 335.679 L2031.19 371.698 L2026.93 371.698 L2026.93 335.679 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip050)" cx="1841.35" cy="406.258" r="19.7486" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="5.85143"/>
<path clip-path="url(#clip050)" d="M1942.64 392.82 L1942.64 405.806 L1948.52 405.806 Q1951.79 405.806 1953.57 404.116 Q1955.35 402.427 1955.35 399.302 Q1955.35 396.2 1953.57 394.51 Q1951.79 392.82 1948.52 392.82 L1942.64 392.82 M1937.97 388.978 L1948.52 388.978 Q1954.33 388.978 1957.3 391.616 Q1960.28 394.232 1960.28 399.302 Q1960.28 404.417 1957.3 407.033 Q1954.33 409.649 1948.52 409.649 L1942.64 409.649 L1942.64 423.538 L1937.97 423.538 L1937.97 388.978 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1987.92 407.889 L1987.92 423.538 L1983.66 423.538 L1983.66 408.028 Q1983.66 404.348 1982.23 402.519 Q1980.79 400.69 1977.92 400.69 Q1974.47 400.69 1972.48 402.89 Q1970.49 405.089 1970.49 408.885 L1970.49 423.538 L1966.21 423.538 L1966.21 387.519 L1970.49 387.519 L1970.49 401.64 Q1972.02 399.302 1974.08 398.144 Q1976.16 396.987 1978.87 396.987 Q1983.34 396.987 1985.63 399.765 Q1987.92 402.519 1987.92 407.889 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1996.42 397.612 L2000.68 397.612 L2000.68 423.538 L1996.42 423.538 L1996.42 397.612 M1996.42 387.519 L2000.68 387.519 L2000.68 392.913 L1996.42 392.913 L1996.42 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2009.59 387.519 L2013.85 387.519 L2013.85 423.538 L2009.59 423.538 L2009.59 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2022.76 397.612 L2027.02 397.612 L2027.02 423.538 L2022.76 423.538 L2022.76 397.612 M2022.76 387.519 L2027.02 387.519 L2027.02 392.913 L2022.76 392.913 L2022.76 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2040.05 419.649 L2040.05 433.399 L2035.77 433.399 L2035.77 397.612 L2040.05 397.612 L2040.05 401.547 Q2041.39 399.232 2043.43 398.121 Q2045.49 396.987 2048.34 396.987 Q2053.06 396.987 2056 400.737 Q2058.96 404.487 2058.96 410.598 Q2058.96 416.709 2056 420.459 Q2053.06 424.209 2048.34 424.209 Q2045.49 424.209 2043.43 423.098 Q2041.39 421.963 2040.05 419.649 M2054.54 410.598 Q2054.54 405.899 2052.6 403.237 Q2050.68 400.552 2047.3 400.552 Q2043.92 400.552 2041.97 403.237 Q2040.05 405.899 2040.05 410.598 Q2040.05 415.297 2041.97 417.982 Q2043.92 420.644 2047.3 420.644 Q2050.68 420.644 2052.6 417.982 Q2054.54 415.297 2054.54 410.598 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip050)" cx="1841.35" cy="458.098" r="20.48" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="4.55111"/>
<path clip-path="url(#clip050)" d="M1937.97 449.452 L1942.23 449.452 L1942.23 475.378 L1937.97 475.378 L1937.97 449.452 M1937.97 439.359 L1942.23 439.359 L1942.23 444.753 L1937.97 444.753 L1937.97 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1972.69 459.729 L1972.69 475.378 L1968.43 475.378 L1968.43 459.868 Q1968.43 456.188 1967 454.359 Q1965.56 452.53 1962.69 452.53 Q1959.24 452.53 1957.25 454.73 Q1955.26 456.929 1955.26 460.725 L1955.26 475.378 L1950.98 475.378 L1950.98 449.452 L1955.26 449.452 L1955.26 453.48 Q1956.79 451.142 1958.85 449.984 Q1960.93 448.827 1963.64 448.827 Q1968.11 448.827 1970.4 451.605 Q1972.69 454.359 1972.69 459.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1985.4 442.091 L1985.4 449.452 L1994.17 449.452 L1994.17 452.762 L1985.4 452.762 L1985.4 466.836 Q1985.4 470.007 1986.26 470.91 Q1987.14 471.813 1989.8 471.813 L1994.17 471.813 L1994.17 475.378 L1989.8 475.378 Q1984.87 475.378 1982.99 473.549 Q1981.12 471.697 1981.12 466.836 L1981.12 452.762 L1977.99 452.762 L1977.99 449.452 L1981.12 449.452 L1981.12 442.091 L1985.4 442.091 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2021.95 461.35 L2021.95 463.433 L2002.37 463.433 Q2002.64 467.831 2005.01 470.146 Q2007.39 472.438 2011.63 472.438 Q2014.08 472.438 2016.37 471.836 Q2018.69 471.234 2020.95 470.03 L2020.95 474.058 Q2018.66 475.03 2016.26 475.54 Q2013.85 476.049 2011.37 476.049 Q2005.17 476.049 2001.53 472.438 Q1997.92 468.827 1997.92 462.669 Q1997.92 456.304 2001.35 452.577 Q2004.8 448.827 2010.63 448.827 Q2015.86 448.827 2018.89 452.206 Q2021.95 455.563 2021.95 461.35 M2017.69 460.1 Q2017.64 456.605 2015.72 454.521 Q2013.83 452.438 2010.68 452.438 Q2007.11 452.438 2004.96 454.452 Q2002.83 456.466 2002.51 460.123 L2017.69 460.1 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2043.96 453.433 Q2043.25 453.017 2042.39 452.831 Q2041.56 452.623 2040.54 452.623 Q2036.93 452.623 2034.98 454.984 Q2033.06 457.322 2033.06 461.72 L2033.06 475.378 L2028.78 475.378 L2028.78 449.452 L2033.06 449.452 L2033.06 453.48 Q2034.4 451.118 2036.56 449.984 Q2038.71 448.827 2041.79 448.827 Q2042.23 448.827 2042.76 448.896 Q2043.29 448.943 2043.94 449.058 L2043.96 453.433 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2064.96 450.216 L2064.96 454.243 Q2063.15 453.317 2061.21 452.855 Q2059.26 452.392 2057.18 452.392 Q2054.01 452.392 2052.41 453.364 Q2050.84 454.336 2050.84 456.28 Q2050.84 457.762 2051.97 458.618 Q2053.11 459.452 2056.53 460.216 L2057.99 460.54 Q2062.53 461.512 2064.43 463.294 Q2066.35 465.054 2066.35 468.225 Q2066.35 471.836 2063.48 473.942 Q2060.63 476.049 2055.63 476.049 Q2053.55 476.049 2051.28 475.632 Q2049.03 475.239 2046.53 474.428 L2046.53 470.03 Q2048.89 471.257 2051.19 471.882 Q2053.48 472.484 2055.72 472.484 Q2058.73 472.484 2060.35 471.466 Q2061.97 470.424 2061.97 468.549 Q2061.97 466.813 2060.79 465.887 Q2059.64 464.961 2055.68 464.104 L2054.2 463.757 Q2050.24 462.924 2048.48 461.211 Q2046.72 459.475 2046.72 456.466 Q2046.72 452.808 2049.31 450.818 Q2051.9 448.827 2056.67 448.827 Q2059.03 448.827 2061.12 449.174 Q2063.2 449.521 2064.96 450.216 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2095.31 461.35 L2095.31 463.433 L2075.72 463.433 Q2076 467.831 2078.36 470.146 Q2080.75 472.438 2084.98 472.438 Q2087.44 472.438 2089.73 471.836 Q2092.04 471.234 2094.31 470.03 L2094.31 474.058 Q2092.02 475.03 2089.61 475.54 Q2087.2 476.049 2084.73 476.049 Q2078.52 476.049 2074.89 472.438 Q2071.28 468.827 2071.28 462.669 Q2071.28 456.304 2074.7 452.577 Q2078.15 448.827 2083.99 448.827 Q2089.22 448.827 2092.25 452.206 Q2095.31 455.563 2095.31 461.35 M2091.05 460.1 Q2091 456.605 2089.08 454.521 Q2087.18 452.438 2084.03 452.438 Q2080.47 452.438 2078.32 454.452 Q2076.19 456.466 2075.86 460.123 L2091.05 460.1 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2120.95 450.447 L2120.95 454.429 Q2119.15 453.433 2117.32 452.947 Q2115.51 452.438 2113.66 452.438 Q2109.52 452.438 2107.23 455.077 Q2104.94 457.692 2104.94 462.438 Q2104.94 467.183 2107.23 469.822 Q2109.52 472.438 2113.66 472.438 Q2115.51 472.438 2117.32 471.952 Q2119.15 471.442 2120.95 470.447 L2120.95 474.382 Q2119.17 475.216 2117.25 475.632 Q2115.35 476.049 2113.2 476.049 Q2107.34 476.049 2103.89 472.368 Q2100.44 468.688 2100.44 462.438 Q2100.44 456.095 2103.92 452.461 Q2107.41 448.827 2113.48 448.827 Q2115.44 448.827 2117.32 449.243 Q2119.19 449.637 2120.95 450.447 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2132.57 442.091 L2132.57 449.452 L2141.35 449.452 L2141.35 452.762 L2132.57 452.762 L2132.57 466.836 Q2132.57 470.007 2133.43 470.91 Q2134.31 471.813 2136.97 471.813 L2141.35 471.813 L2141.35 475.378 L2136.97 475.378 Q2132.04 475.378 2130.17 473.549 Q2128.29 471.697 2128.29 466.836 L2128.29 452.762 L2125.17 452.762 L2125.17 449.452 L2128.29 449.452 L2128.29 442.091 L2132.57 442.091 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2146.95 449.452 L2151.21 449.452 L2151.21 475.378 L2146.95 475.378 L2146.95 449.452 M2146.95 439.359 L2151.21 439.359 L2151.21 444.753 L2146.95 444.753 L2146.95 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2170.17 452.438 Q2166.74 452.438 2164.75 455.123 Q2162.76 457.785 2162.76 462.438 Q2162.76 467.091 2164.73 469.776 Q2166.72 472.438 2170.17 472.438 Q2173.57 472.438 2175.56 469.753 Q2177.55 467.067 2177.55 462.438 Q2177.55 457.831 2175.56 455.146 Q2173.57 452.438 2170.17 452.438 M2170.17 448.827 Q2175.72 448.827 2178.89 452.438 Q2182.06 456.049 2182.06 462.438 Q2182.06 468.804 2178.89 472.438 Q2175.72 476.049 2170.17 476.049 Q2164.59 476.049 2161.42 472.438 Q2158.27 468.804 2158.27 462.438 Q2158.27 456.049 2161.42 452.438 Q2164.59 448.827 2170.17 448.827 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2210.68 459.729 L2210.68 475.378 L2206.42 475.378 L2206.42 459.868 Q2206.42 456.188 2204.98 454.359 Q2203.55 452.53 2200.68 452.53 Q2197.23 452.53 2195.24 454.73 Q2193.25 456.929 2193.25 460.725 L2193.25 475.378 L2188.96 475.378 L2188.96 449.452 L2193.25 449.452 L2193.25 453.48 Q2194.77 451.142 2196.83 449.984 Q2198.92 448.827 2201.63 448.827 Q2206.09 448.827 2208.38 451.605 Q2210.68 454.359 2210.68 459.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2235.65 471.442 L2243.29 471.442 L2243.29 445.077 L2234.98 446.743 L2234.98 442.484 L2243.25 440.818 L2247.92 440.818 L2247.92 471.442 L2255.56 471.442 L2255.56 475.378 L2235.65 475.378 L2235.65 471.442 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip050)" cx="1841.35" cy="509.938" r="20.48" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="4.55111"/>
<path clip-path="url(#clip050)" d="M1937.97 501.292 L1942.23 501.292 L1942.23 527.218 L1937.97 527.218 L1937.97 501.292 M1937.97 491.199 L1942.23 491.199 L1942.23 496.593 L1937.97 496.593 L1937.97 491.199 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1972.69 511.569 L1972.69 527.218 L1968.43 527.218 L1968.43 511.708 Q1968.43 508.028 1967 506.199 Q1965.56 504.37 1962.69 504.37 Q1959.24 504.37 1957.25 506.57 Q1955.26 508.769 1955.26 512.565 L1955.26 527.218 L1950.98 527.218 L1950.98 501.292 L1955.26 501.292 L1955.26 505.32 Q1956.79 502.982 1958.85 501.824 Q1960.93 500.667 1963.64 500.667 Q1968.11 500.667 1970.4 503.445 Q1972.69 506.199 1972.69 511.569 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1985.4 493.931 L1985.4 501.292 L1994.17 501.292 L1994.17 504.602 L1985.4 504.602 L1985.4 518.676 Q1985.4 521.847 1986.26 522.75 Q1987.14 523.653 1989.8 523.653 L1994.17 523.653 L1994.17 527.218 L1989.8 527.218 Q1984.87 527.218 1982.99 525.389 Q1981.12 523.537 1981.12 518.676 L1981.12 504.602 L1977.99 504.602 L1977.99 501.292 L1981.12 501.292 L1981.12 493.931 L1985.4 493.931 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2021.95 513.19 L2021.95 515.273 L2002.37 515.273 Q2002.64 519.671 2005.01 521.986 Q2007.39 524.278 2011.63 524.278 Q2014.08 524.278 2016.37 523.676 Q2018.69 523.074 2020.95 521.87 L2020.95 525.898 Q2018.66 526.87 2016.26 527.38 Q2013.85 527.889 2011.37 527.889 Q2005.17 527.889 2001.53 524.278 Q1997.92 520.667 1997.92 514.509 Q1997.92 508.144 2001.35 504.417 Q2004.8 500.667 2010.63 500.667 Q2015.86 500.667 2018.89 504.046 Q2021.95 507.403 2021.95 513.19 M2017.69 511.94 Q2017.64 508.445 2015.72 506.361 Q2013.83 504.278 2010.68 504.278 Q2007.11 504.278 2004.96 506.292 Q2002.83 508.306 2002.51 511.963 L2017.69 511.94 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2043.96 505.273 Q2043.25 504.857 2042.39 504.671 Q2041.56 504.463 2040.54 504.463 Q2036.93 504.463 2034.98 506.824 Q2033.06 509.162 2033.06 513.56 L2033.06 527.218 L2028.78 527.218 L2028.78 501.292 L2033.06 501.292 L2033.06 505.32 Q2034.4 502.958 2036.56 501.824 Q2038.71 500.667 2041.79 500.667 Q2042.23 500.667 2042.76 500.736 Q2043.29 500.783 2043.94 500.898 L2043.96 505.273 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2064.96 502.056 L2064.96 506.083 Q2063.15 505.157 2061.21 504.695 Q2059.26 504.232 2057.18 504.232 Q2054.01 504.232 2052.41 505.204 Q2050.84 506.176 2050.84 508.12 Q2050.84 509.602 2051.97 510.458 Q2053.11 511.292 2056.53 512.056 L2057.99 512.38 Q2062.53 513.352 2064.43 515.134 Q2066.35 516.894 2066.35 520.065 Q2066.35 523.676 2063.48 525.782 Q2060.63 527.889 2055.63 527.889 Q2053.55 527.889 2051.28 527.472 Q2049.03 527.079 2046.53 526.268 L2046.53 521.87 Q2048.89 523.097 2051.19 523.722 Q2053.48 524.324 2055.72 524.324 Q2058.73 524.324 2060.35 523.306 Q2061.97 522.264 2061.97 520.389 Q2061.97 518.653 2060.79 517.727 Q2059.64 516.801 2055.68 515.944 L2054.2 515.597 Q2050.24 514.764 2048.48 513.051 Q2046.72 511.315 2046.72 508.306 Q2046.72 504.648 2049.31 502.658 Q2051.9 500.667 2056.67 500.667 Q2059.03 500.667 2061.12 501.014 Q2063.2 501.361 2064.96 502.056 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2095.31 513.19 L2095.31 515.273 L2075.72 515.273 Q2076 519.671 2078.36 521.986 Q2080.75 524.278 2084.98 524.278 Q2087.44 524.278 2089.73 523.676 Q2092.04 523.074 2094.31 521.87 L2094.31 525.898 Q2092.02 526.87 2089.61 527.38 Q2087.2 527.889 2084.73 527.889 Q2078.52 527.889 2074.89 524.278 Q2071.28 520.667 2071.28 514.509 Q2071.28 508.144 2074.7 504.417 Q2078.15 500.667 2083.99 500.667 Q2089.22 500.667 2092.25 504.046 Q2095.31 507.403 2095.31 513.19 M2091.05 511.94 Q2091 508.445 2089.08 506.361 Q2087.18 504.278 2084.03 504.278 Q2080.47 504.278 2078.32 506.292 Q2076.19 508.306 2075.86 511.963 L2091.05 511.94 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2120.95 502.287 L2120.95 506.269 Q2119.15 505.273 2117.32 504.787 Q2115.51 504.278 2113.66 504.278 Q2109.52 504.278 2107.23 506.917 Q2104.94 509.532 2104.94 514.278 Q2104.94 519.023 2107.23 521.662 Q2109.52 524.278 2113.66 524.278 Q2115.51 524.278 2117.32 523.792 Q2119.15 523.282 2120.95 522.287 L2120.95 526.222 Q2119.17 527.056 2117.25 527.472 Q2115.35 527.889 2113.2 527.889 Q2107.34 527.889 2103.89 524.208 Q2100.44 520.528 2100.44 514.278 Q2100.44 507.935 2103.92 504.301 Q2107.41 500.667 2113.48 500.667 Q2115.44 500.667 2117.32 501.083 Q2119.19 501.477 2120.95 502.287 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2132.57 493.931 L2132.57 501.292 L2141.35 501.292 L2141.35 504.602 L2132.57 504.602 L2132.57 518.676 Q2132.57 521.847 2133.43 522.75 Q2134.31 523.653 2136.97 523.653 L2141.35 523.653 L2141.35 527.218 L2136.97 527.218 Q2132.04 527.218 2130.17 525.389 Q2128.29 523.537 2128.29 518.676 L2128.29 504.602 L2125.17 504.602 L2125.17 501.292 L2128.29 501.292 L2128.29 493.931 L2132.57 493.931 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2146.95 501.292 L2151.21 501.292 L2151.21 527.218 L2146.95 527.218 L2146.95 501.292 M2146.95 491.199 L2151.21 491.199 L2151.21 496.593 L2146.95 496.593 L2146.95 491.199 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2170.17 504.278 Q2166.74 504.278 2164.75 506.963 Q2162.76 509.625 2162.76 514.278 Q2162.76 518.931 2164.73 521.616 Q2166.72 524.278 2170.17 524.278 Q2173.57 524.278 2175.56 521.593 Q2177.55 518.907 2177.55 514.278 Q2177.55 509.671 2175.56 506.986 Q2173.57 504.278 2170.17 504.278 M2170.17 500.667 Q2175.72 500.667 2178.89 504.278 Q2182.06 507.889 2182.06 514.278 Q2182.06 520.644 2178.89 524.278 Q2175.72 527.889 2170.17 527.889 Q2164.59 527.889 2161.42 524.278 Q2158.27 520.644 2158.27 514.278 Q2158.27 507.889 2161.42 504.278 Q2164.59 500.667 2170.17 500.667 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2210.68 511.569 L2210.68 527.218 L2206.42 527.218 L2206.42 511.708 Q2206.42 508.028 2204.98 506.199 Q2203.55 504.37 2200.68 504.37 Q2197.23 504.37 2195.24 506.57 Q2193.25 508.769 2193.25 512.565 L2193.25 527.218 L2188.96 527.218 L2188.96 501.292 L2193.25 501.292 L2193.25 505.32 Q2194.77 502.982 2196.83 501.824 Q2198.92 500.667 2201.63 500.667 Q2206.09 500.667 2208.38 503.445 Q2210.68 506.199 2210.68 511.569 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2249.01 508.583 Q2252.37 509.301 2254.24 511.569 Q2256.14 513.838 2256.14 517.171 Q2256.14 522.287 2252.62 525.088 Q2249.1 527.889 2242.62 527.889 Q2240.44 527.889 2238.13 527.449 Q2235.84 527.032 2233.38 526.176 L2233.38 521.662 Q2235.33 522.796 2237.64 523.375 Q2239.96 523.954 2242.48 523.954 Q2246.88 523.954 2249.17 522.218 Q2251.49 520.481 2251.49 517.171 Q2251.49 514.116 2249.33 512.403 Q2247.2 510.667 2243.38 510.667 L2239.36 510.667 L2239.36 506.824 L2243.57 506.824 Q2247.02 506.824 2248.85 505.458 Q2250.68 504.07 2250.68 501.477 Q2250.68 498.815 2248.78 497.403 Q2246.9 495.968 2243.38 495.968 Q2241.46 495.968 2239.26 496.384 Q2237.06 496.801 2234.43 497.681 L2234.43 493.514 Q2237.09 492.773 2239.4 492.403 Q2241.74 492.033 2243.8 492.033 Q2249.12 492.033 2252.23 494.463 Q2255.33 496.87 2255.33 500.991 Q2255.33 503.861 2253.68 505.852 Q2252.04 507.82 2249.01 508.583 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip050)" cx="1841.35" cy="561.778" r="20.48" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="4.55111"/>
<path clip-path="url(#clip050)" d="M1937.97 553.132 L1942.23 553.132 L1942.23 579.058 L1937.97 579.058 L1937.97 553.132 M1937.97 543.039 L1942.23 543.039 L1942.23 548.433 L1937.97 548.433 L1937.97 543.039 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1972.69 563.409 L1972.69 579.058 L1968.43 579.058 L1968.43 563.548 Q1968.43 559.868 1967 558.039 Q1965.56 556.21 1962.69 556.21 Q1959.24 556.21 1957.25 558.41 Q1955.26 560.609 1955.26 564.405 L1955.26 579.058 L1950.98 579.058 L1950.98 553.132 L1955.26 553.132 L1955.26 557.16 Q1956.79 554.822 1958.85 553.664 Q1960.93 552.507 1963.64 552.507 Q1968.11 552.507 1970.4 555.285 Q1972.69 558.039 1972.69 563.409 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M1985.4 545.771 L1985.4 553.132 L1994.17 553.132 L1994.17 556.442 L1985.4 556.442 L1985.4 570.516 Q1985.4 573.687 1986.26 574.59 Q1987.14 575.493 1989.8 575.493 L1994.17 575.493 L1994.17 579.058 L1989.8 579.058 Q1984.87 579.058 1982.99 577.229 Q1981.12 575.377 1981.12 570.516 L1981.12 556.442 L1977.99 556.442 L1977.99 553.132 L1981.12 553.132 L1981.12 545.771 L1985.4 545.771 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2021.95 565.03 L2021.95 567.113 L2002.37 567.113 Q2002.64 571.511 2005.01 573.826 Q2007.39 576.118 2011.63 576.118 Q2014.08 576.118 2016.37 575.516 Q2018.69 574.914 2020.95 573.71 L2020.95 577.738 Q2018.66 578.71 2016.26 579.22 Q2013.85 579.729 2011.37 579.729 Q2005.17 579.729 2001.53 576.118 Q1997.92 572.507 1997.92 566.349 Q1997.92 559.984 2001.35 556.257 Q2004.8 552.507 2010.63 552.507 Q2015.86 552.507 2018.89 555.886 Q2021.95 559.243 2021.95 565.03 M2017.69 563.78 Q2017.64 560.285 2015.72 558.201 Q2013.83 556.118 2010.68 556.118 Q2007.11 556.118 2004.96 558.132 Q2002.83 560.146 2002.51 563.803 L2017.69 563.78 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2043.96 557.113 Q2043.25 556.697 2042.39 556.511 Q2041.56 556.303 2040.54 556.303 Q2036.93 556.303 2034.98 558.664 Q2033.06 561.002 2033.06 565.4 L2033.06 579.058 L2028.78 579.058 L2028.78 553.132 L2033.06 553.132 L2033.06 557.16 Q2034.4 554.798 2036.56 553.664 Q2038.71 552.507 2041.79 552.507 Q2042.23 552.507 2042.76 552.576 Q2043.29 552.623 2043.94 552.738 L2043.96 557.113 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2064.96 553.896 L2064.96 557.923 Q2063.15 556.997 2061.21 556.535 Q2059.26 556.072 2057.18 556.072 Q2054.01 556.072 2052.41 557.044 Q2050.84 558.016 2050.84 559.96 Q2050.84 561.442 2051.97 562.298 Q2053.11 563.132 2056.53 563.896 L2057.99 564.22 Q2062.53 565.192 2064.43 566.974 Q2066.35 568.734 2066.35 571.905 Q2066.35 575.516 2063.48 577.622 Q2060.63 579.729 2055.63 579.729 Q2053.55 579.729 2051.28 579.312 Q2049.03 578.919 2046.53 578.108 L2046.53 573.71 Q2048.89 574.937 2051.19 575.562 Q2053.48 576.164 2055.72 576.164 Q2058.73 576.164 2060.35 575.146 Q2061.97 574.104 2061.97 572.229 Q2061.97 570.493 2060.79 569.567 Q2059.64 568.641 2055.68 567.784 L2054.2 567.437 Q2050.24 566.604 2048.48 564.891 Q2046.72 563.155 2046.72 560.146 Q2046.72 556.488 2049.31 554.498 Q2051.9 552.507 2056.67 552.507 Q2059.03 552.507 2061.12 552.854 Q2063.2 553.201 2064.96 553.896 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2095.31 565.03 L2095.31 567.113 L2075.72 567.113 Q2076 571.511 2078.36 573.826 Q2080.75 576.118 2084.98 576.118 Q2087.44 576.118 2089.73 575.516 Q2092.04 574.914 2094.31 573.71 L2094.31 577.738 Q2092.02 578.71 2089.61 579.22 Q2087.2 579.729 2084.73 579.729 Q2078.52 579.729 2074.89 576.118 Q2071.28 572.507 2071.28 566.349 Q2071.28 559.984 2074.7 556.257 Q2078.15 552.507 2083.99 552.507 Q2089.22 552.507 2092.25 555.886 Q2095.31 559.243 2095.31 565.03 M2091.05 563.78 Q2091 560.285 2089.08 558.201 Q2087.18 556.118 2084.03 556.118 Q2080.47 556.118 2078.32 558.132 Q2076.19 560.146 2075.86 563.803 L2091.05 563.78 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2120.95 554.127 L2120.95 558.109 Q2119.15 557.113 2117.32 556.627 Q2115.51 556.118 2113.66 556.118 Q2109.52 556.118 2107.23 558.757 Q2104.94 561.372 2104.94 566.118 Q2104.94 570.863 2107.23 573.502 Q2109.52 576.118 2113.66 576.118 Q2115.51 576.118 2117.32 575.632 Q2119.15 575.122 2120.95 574.127 L2120.95 578.062 Q2119.17 578.896 2117.25 579.312 Q2115.35 579.729 2113.2 579.729 Q2107.34 579.729 2103.89 576.048 Q2100.44 572.368 2100.44 566.118 Q2100.44 559.775 2103.92 556.141 Q2107.41 552.507 2113.48 552.507 Q2115.44 552.507 2117.32 552.923 Q2119.19 553.317 2120.95 554.127 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2132.57 545.771 L2132.57 553.132 L2141.35 553.132 L2141.35 556.442 L2132.57 556.442 L2132.57 570.516 Q2132.57 573.687 2133.43 574.59 Q2134.31 575.493 2136.97 575.493 L2141.35 575.493 L2141.35 579.058 L2136.97 579.058 Q2132.04 579.058 2130.17 577.229 Q2128.29 575.377 2128.29 570.516 L2128.29 556.442 L2125.17 556.442 L2125.17 553.132 L2128.29 553.132 L2128.29 545.771 L2132.57 545.771 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2146.95 553.132 L2151.21 553.132 L2151.21 579.058 L2146.95 579.058 L2146.95 553.132 M2146.95 543.039 L2151.21 543.039 L2151.21 548.433 L2146.95 548.433 L2146.95 543.039 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2170.17 556.118 Q2166.74 556.118 2164.75 558.803 Q2162.76 561.465 2162.76 566.118 Q2162.76 570.771 2164.73 573.456 Q2166.72 576.118 2170.17 576.118 Q2173.57 576.118 2175.56 573.433 Q2177.55 570.747 2177.55 566.118 Q2177.55 561.511 2175.56 558.826 Q2173.57 556.118 2170.17 556.118 M2170.17 552.507 Q2175.72 552.507 2178.89 556.118 Q2182.06 559.729 2182.06 566.118 Q2182.06 572.484 2178.89 576.118 Q2175.72 579.729 2170.17 579.729 Q2164.59 579.729 2161.42 576.118 Q2158.27 572.484 2158.27 566.118 Q2158.27 559.729 2161.42 556.118 Q2164.59 552.507 2170.17 552.507 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2210.68 563.409 L2210.68 579.058 L2206.42 579.058 L2206.42 563.548 Q2206.42 559.868 2204.98 558.039 Q2203.55 556.21 2200.68 556.21 Q2197.23 556.21 2195.24 558.41 Q2193.25 560.609 2193.25 564.405 L2193.25 579.058 L2188.96 579.058 L2188.96 553.132 L2193.25 553.132 L2193.25 557.16 Q2194.77 554.822 2196.83 553.664 Q2198.92 552.507 2201.63 552.507 Q2206.09 552.507 2208.38 555.285 Q2210.68 558.039 2210.68 563.409 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip050)" d="M2234.89 544.498 L2253.25 544.498 L2253.25 548.433 L2239.17 548.433 L2239.17 556.905 Q2240.19 556.558 2241.21 556.396 Q2242.23 556.21 2243.25 556.21 Q2249.03 556.21 2252.41 559.382 Q2255.79 562.553 2255.79 567.97 Q2255.79 573.548 2252.32 576.65 Q2248.85 579.729 2242.53 579.729 Q2240.35 579.729 2238.08 579.358 Q2235.84 578.988 2233.43 578.247 L2233.43 573.548 Q2235.51 574.683 2237.74 575.238 Q2239.96 575.794 2242.43 575.794 Q2246.44 575.794 2248.78 573.687 Q2251.12 571.581 2251.12 567.97 Q2251.12 564.359 2248.78 562.252 Q2246.44 560.146 2242.43 560.146 Q2240.56 560.146 2238.68 560.562 Q2236.83 560.979 2234.89 561.859 L2234.89 544.498 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /></svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA pE,4persist_js_state·has_pluto_hook_features§cell_id$e055262c-1c73-11eb-14de-2f537a19b012depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$038d5e88-1ac7-11eb-2020-a9d7e19feebcqueued¤logsrunning¦outputbodyف<div class="markdown"><div class="admonition correct"><p class="admonition-title">Got it!</p><p>Well done&#33;</p>

</div>
</div>mimetext/htmlrootassigneelast_run_timestampA qBpersist_js_state·has_pluto_hook_features§cell_id$038d5e88-1ac7-11eb-2020-a9d7e19feebcdepends_on_disabled_cells§runtime I`ipublished_object_keysdepends_on_skipped_cells§errored$1e202680-19c4-11eb-29a7-99061b886b3cqueued¤logsrunning¦outputbodyelementsname"Jazzy Doe"text/plainkerberos_id"jazz"text/plaintypeNamedTupleobjectideb71b675ed8a366bmime!application/vnd.pluto.tree+objectrootassigneestudentlast_run_timestampA kFpersist_js_state·has_pluto_hook_features§cell_id$1e202680-19c4-11eb-29a7-99061b886b3cdepends_on_disabled_cells§runtime=qpublished_object_keysdepends_on_skipped_cells§errored$293776f8-1ac4-11eb-21db-9d023c09e89fqueued¤logsrunning¦outputbody<div class="markdown"><p>👉 Modify the definition of <code>box_scene</code> to be a vector of 4 walls, instead of 3. The fourth wall should be positioned at <code>&#91;0,10&#93;</code>, and point downwards.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gBKpersist_js_state·has_pluto_hook_features§cell_id$293776f8-1ac4-11eb-21db-9d023c09e89fdepends_on_disabled_cells§runtime |published_object_keysdepends_on_skipped_cells§errored$6de1bafc-1a01-11eb-3d67-c9d9b6c3cea8queued¤logsrunning¦outputbody-plot_object! (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA k?%persist_js_state·has_pluto_hook_features§cell_id$6de1bafc-1a01-11eb-3d67-c9d9b6c3cea8depends_on_disabled_cells§runtime {=published_object_keysdepends_on_skipped_cells§errored$e5ed6098-1c70-11eb-0b58-31d1830b9a10queued¤logsrunning¦outputbody<div class="markdown"><p>In the next exercise, we will find the intersection of a ray of light and a wall. To represent light, we create a <code>struct</code> called <strong><code>Photon</code></strong>, holding the position and travel direction of a single particle of light. We also include the <em>index of refraction</em> of the medium it is currently traveling in, we will use this later.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gBpersist_js_state·has_pluto_hook_features§cell_id$e5ed6098-1c70-11eb-0b58-31d1830b9a10depends_on_disabled_cells§runtime {published_object_keysdepends_on_skipped_cells§errored$e9c5d68c-1ac2-11eb-04ec-3b72eb133239queued¤logsrunning¦outputbody<div class="markdown"><h5><code>Miss</code></h5>
<p>is a struct with <em>no fields</em>. It does not contain any information, except the fact that it is a <code>Miss</code>. You create a new <code>Miss</code> object like so:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gCpersist_js_state·has_pluto_hook_features§cell_id$e9c5d68c-1ac2-11eb-04ec-3b72eb133239depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$492b257a-194f-11eb-17fb-f770b4d3da2equeued¤logsrunning¦outputbody<div class="markdown"><p>So we need a way of finding all of these.</p>
<p>To start, let&#39;s look at the intersection of a <strong>point</strong> and a sphere. So long as the relative distance between the photon and the sphere&#39;s center satisfies the sphere equation, we can be considered inside of the sphere. More specifically, we are inside the sphere if:</p>
<p class="tex">$$&#40;x_s-x_p&#41;^2&#43;&#40;y_s-y_p&#41; &lt; r^2.$$</p>
<p>where the <span class="tex">$s$</span> and <span class="tex">$p$</span> subscripts represent the sphere and photon, respectively. We know we are <em>on</em> the sphere if</p>
<p class="tex">$$&#40;x_s-x_p&#41;^2&#43;&#40;y_s-y_p&#41; &#61; r^2.$$</p>
<p>Let&#39;s rewrite this in vector notation as:</p>
<p class="tex">$$&#40;\mathbf&#123;R&#125; - \mathbf&#123;S&#125;&#41;\cdot&#40;\mathbf&#123;R&#125; - \mathbf&#123;S&#125;&#41; &#61; r^2,$$</p>
<p>where <span class="tex">$\mathbf&#123;R&#125;$</span> and <span class="tex">$\mathbf&#123;S&#125;$</span> are the <span class="tex">$x$</span>, <span class="tex">$y$</span>, and <span class="tex">$z$</span> location of the photon and sphere, respectively.</p>
<p>Returning to the timestepping example from above, we know that our ray is moving forward with time such that <span class="tex">$\mathbf&#123;R&#125; &#61; \mathbf&#123;R&#125;_0 &#43; v dt &#61; \mathbf&#123;R&#125;_0 &#43; \ell t$</span>. We now need to ask ourselves if there is any time when our ray interacts with the sphere. Plugging this in to the dot product from above, we get</p>
<p class="tex">$$&#40;\mathbf&#123;R&#125;_0 &#43; \ell t - \mathbf&#123;S&#125;&#41;\cdot&#40;\mathbf&#123;R&#125;_0 &#43; \ell t - \mathbf&#123;S&#125;&#41; &#61; r^2$$</p>
<p>To solve this for <span class="tex">$t$</span>, we first need to reorder everything into the form of a polynomial, such that:</p>
<p class="tex">$$t^2&#40;\ell\cdot\ell&#41;&#43;2t\ell\cdot&#40;\mathbf&#123;R_0&#125;-\mathbf&#123;S&#125;&#41;&#43;&#40;\mathbf&#123;R&#125;_0-\mathbf&#123;S&#125;&#41;\cdot&#40;\mathbf&#123;R&#125;_0-\mathbf&#123;S&#125;&#41; - r^2&#61;0.$$</p>
<p>This can be solved with the good ol&#39; fashioned quadratic equation:</p>
<p class="tex">$$\frac&#123;-b\pm\sqrt&#123;b^2-4ac&#125;&#125;&#123;2a&#125;,$$</p>
<p>where <span class="tex">$a &#61; \ell\cdot\ell$</span>, <span class="tex">$b &#61; 2\ell\cdot&#40;\mathbf&#123;R&#125;_0-\mathbf&#123;S&#125;&#41;$</span>, and <span class="tex">$c&#61;&#40;\mathbf&#123;R&#125;_0-\mathbf&#123;S&#125;&#41;\cdot&#40;\mathbf&#123;R&#125;_0-\mathbf&#123;S&#125;&#41; - r^2$</span></p>
<p>If the quadratic equation returns no roots, there is no intersection. If it returns 1 root, the ray just barely hits the edge of the sphere. If it returns 2 roots, it goes right through&#33;</p>
<p>The easiest way to check this is by looking at the discriminant <span class="tex">$d &#61; b^2-4ac$</span>.</p>
<p class="tex">$$\text&#123;Number of roots&#125; &#61; \left\&#123;
    \begin&#123;align&#125;
       &amp;0, \qquad \text&#123;if &#125; d &lt; 0 \\
       &amp;1, \qquad \text&#123;if &#125; d &#61; 0 \\
       &amp;2, \qquad \text&#123;if &#125; d &gt; 0 \\
    \end&#123;align&#125;
\right.$$</p>
<p>In the case that there are 2 roots, the second root corresponds to when the ray would interact with the far edge of the sphere <em>if there were no refraction or reflection&#33;</em>; therefore, we only care about returning the closest point.</p>
<p>With all this said, we are ready to write some code.</p>
<p>👉 Write a new method <code>intersection</code> that takes a <code>Photon</code> and a <code>Sphere</code>, and returns either a <code>Miss</code> or an <code>Intersection</code>, using the method described above. Go back to Exercise 1.3 where we defined the first method, and see how we adapt it to a sphere.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gGPưpersist_js_state·has_pluto_hook_features§cell_id$492b257a-194f-11eb-17fb-f770b4d3da2edepends_on_disabled_cells§runtime ͵published_object_keysdepends_on_skipped_cells§errored$0393dd3a-1a06-11eb-18a9-494ae7a26bc0queued¤logsrunning¦outputbodyC;<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="200" viewBox="0 0 1600 800">
<defs>
  <clipPath id="clip850">
    <rect x="0" y="0" width="1600" height="800"/>
  </clipPath>
</defs>
<path clip-path="url(#clip850)" d="M0 800 L1600 800 L1600 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip851">
    <rect x="320" y="0" width="1121" height="800"/>
  </clipPath>
</defs>
<path clip-path="url(#clip850)" d="M170.867 703.088 L1552.76 703.088 L1552.76 47.2441 L170.867 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip852">
    <rect x="170" y="47" width="1383" height="657"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip852)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="243.091,703.088 243.091,47.2441 "/>
<polyline clip-path="url(#clip852)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="552.451,703.088 552.451,47.2441 "/>
<polyline clip-path="url(#clip852)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="861.811,703.088 861.811,47.2441 "/>
<polyline clip-path="url(#clip852)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1171.17,703.088 1171.17,47.2441 "/>
<polyline clip-path="url(#clip852)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1480.53,703.088 1480.53,47.2441 "/>
<polyline clip-path="url(#clip852)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,684.526 1552.76,684.526 "/>
<polyline clip-path="url(#clip852)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,529.846 1552.76,529.846 "/>
<polyline clip-path="url(#clip852)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,375.166 1552.76,375.166 "/>
<polyline clip-path="url(#clip852)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,220.486 1552.76,220.486 "/>
<polyline clip-path="url(#clip852)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,65.8057 1552.76,65.8057 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,703.088 1552.76,703.088 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="243.091,703.088 243.091,684.19 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="552.451,703.088 552.451,684.19 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="861.811,703.088 861.811,684.19 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1171.17,703.088 1171.17,684.19 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1480.53,703.088 1480.53,684.19 "/>
<path clip-path="url(#clip850)" d="M197.153 742.259 L226.829 742.259 L226.829 746.194 L197.153 746.194 L197.153 742.259 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M249.769 728.602 L237.963 747.051 L249.769 747.051 L249.769 728.602 M248.542 724.528 L254.422 724.528 L254.422 747.051 L259.352 747.051 L259.352 750.94 L254.422 750.94 L254.422 759.088 L249.769 759.088 L249.769 750.94 L234.167 750.94 L234.167 746.426 L248.542 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M277.084 727.607 Q273.473 727.607 271.644 731.171 Q269.838 734.713 269.838 741.843 Q269.838 748.949 271.644 752.514 Q273.473 756.055 277.084 756.055 Q280.718 756.055 282.523 752.514 Q284.352 748.949 284.352 741.843 Q284.352 734.713 282.523 731.171 Q280.718 727.607 277.084 727.607 M277.084 723.903 Q282.894 723.903 285.949 728.509 Q289.028 733.093 289.028 741.843 Q289.028 750.569 285.949 755.176 Q282.894 759.759 277.084 759.759 Q271.273 759.759 268.195 755.176 Q265.139 750.569 265.139 741.843 Q265.139 733.093 268.195 728.509 Q271.273 723.903 277.084 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M506.514 742.259 L536.19 742.259 L536.19 746.194 L506.514 746.194 L506.514 742.259 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M550.31 755.153 L566.629 755.153 L566.629 759.088 L544.685 759.088 L544.685 755.153 Q547.347 752.398 551.93 747.768 Q556.537 743.116 557.717 741.773 Q559.963 739.25 560.842 737.514 Q561.745 735.755 561.745 734.065 Q561.745 731.31 559.8 729.574 Q557.879 727.838 554.777 727.838 Q552.578 727.838 550.125 728.602 Q547.694 729.366 544.916 730.917 L544.916 726.195 Q547.74 725.06 550.194 724.482 Q552.648 723.903 554.685 723.903 Q560.055 723.903 563.25 726.588 Q566.444 729.273 566.444 733.764 Q566.444 735.894 565.634 737.815 Q564.847 739.713 562.74 742.306 Q562.162 742.977 559.06 746.194 Q555.958 749.389 550.31 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M586.444 727.607 Q582.833 727.607 581.004 731.171 Q579.199 734.713 579.199 741.843 Q579.199 748.949 581.004 752.514 Q582.833 756.055 586.444 756.055 Q590.078 756.055 591.884 752.514 Q593.712 748.949 593.712 741.843 Q593.712 734.713 591.884 731.171 Q590.078 727.607 586.444 727.607 M586.444 723.903 Q592.254 723.903 595.31 728.509 Q598.388 733.093 598.388 741.843 Q598.388 750.569 595.31 755.176 Q592.254 759.759 586.444 759.759 Q580.634 759.759 577.555 755.176 Q574.499 750.569 574.499 741.843 Q574.499 733.093 577.555 728.509 Q580.634 723.903 586.444 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M861.811 727.607 Q858.2 727.607 856.371 731.171 Q854.566 734.713 854.566 741.843 Q854.566 748.949 856.371 752.514 Q858.2 756.055 861.811 756.055 Q865.446 756.055 867.251 752.514 Q869.08 748.949 869.08 741.843 Q869.08 734.713 867.251 731.171 Q865.446 727.607 861.811 727.607 M861.811 723.903 Q867.621 723.903 870.677 728.509 Q873.756 733.093 873.756 741.843 Q873.756 750.569 870.677 755.176 Q867.621 759.759 861.811 759.759 Q856.001 759.759 852.922 755.176 Q849.867 750.569 849.867 741.843 Q849.867 733.093 852.922 728.509 Q856.001 723.903 861.811 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M1149.94 755.153 L1166.26 755.153 L1166.26 759.088 L1144.32 759.088 L1144.32 755.153 Q1146.98 752.398 1151.57 747.768 Q1156.17 743.116 1157.35 741.773 Q1159.6 739.25 1160.48 737.514 Q1161.38 735.755 1161.38 734.065 Q1161.38 731.31 1159.44 729.574 Q1157.51 727.838 1154.41 727.838 Q1152.21 727.838 1149.76 728.602 Q1147.33 729.366 1144.55 730.917 L1144.55 726.195 Q1147.38 725.06 1149.83 724.482 Q1152.28 723.903 1154.32 723.903 Q1159.69 723.903 1162.88 726.588 Q1166.08 729.273 1166.08 733.764 Q1166.08 735.894 1165.27 737.815 Q1164.48 739.713 1162.38 742.306 Q1161.8 742.977 1158.69 746.194 Q1155.59 749.389 1149.94 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M1186.08 727.607 Q1182.47 727.607 1180.64 731.171 Q1178.83 734.713 1178.83 741.843 Q1178.83 748.949 1180.64 752.514 Q1182.47 756.055 1186.08 756.055 Q1189.71 756.055 1191.52 752.514 Q1193.35 748.949 1193.35 741.843 Q1193.35 734.713 1191.52 731.171 Q1189.71 727.607 1186.08 727.607 M1186.08 723.903 Q1191.89 723.903 1194.94 728.509 Q1198.02 733.093 1198.02 741.843 Q1198.02 750.569 1194.94 755.176 Q1191.89 759.759 1186.08 759.759 Q1180.27 759.759 1177.19 755.176 Q1174.13 750.569 1174.13 741.843 Q1174.13 733.093 1177.19 728.509 Q1180.27 723.903 1186.08 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M1468.7 728.602 L1456.9 747.051 L1468.7 747.051 L1468.7 728.602 M1467.48 724.528 L1473.36 724.528 L1473.36 747.051 L1478.29 747.051 L1478.29 750.94 L1473.36 750.94 L1473.36 759.088 L1468.7 759.088 L1468.7 750.94 L1453.1 750.94 L1453.1 746.426 L1467.48 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M1496.02 727.607 Q1492.41 727.607 1490.58 731.171 Q1488.77 734.713 1488.77 741.843 Q1488.77 748.949 1490.58 752.514 Q1492.41 756.055 1496.02 756.055 Q1499.65 756.055 1501.46 752.514 Q1503.29 748.949 1503.29 741.843 Q1503.29 734.713 1501.46 731.171 Q1499.65 727.607 1496.02 727.607 M1496.02 723.903 Q1501.83 723.903 1504.88 728.509 Q1507.96 733.093 1507.96 741.843 Q1507.96 750.569 1504.88 755.176 Q1501.83 759.759 1496.02 759.759 Q1490.21 759.759 1487.13 755.176 Q1484.07 750.569 1484.07 741.843 Q1484.07 733.093 1487.13 728.509 Q1490.21 723.903 1496.02 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,703.088 170.867,47.2441 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,684.526 189.764,684.526 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,529.846 189.764,529.846 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,375.166 189.764,375.166 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,220.486 189.764,220.486 "/>
<polyline clip-path="url(#clip850)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,65.8057 189.764,65.8057 "/>
<path clip-path="url(#clip850)" d="M54.9921 684.978 L84.6679 684.978 L84.6679 688.913 L54.9921 688.913 L54.9921 684.978 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M98.7882 697.871 L115.108 697.871 L115.108 701.806 L93.1632 701.806 L93.1632 697.871 Q95.8252 695.116 100.409 690.487 Q105.015 685.834 106.196 684.492 Q108.441 681.968 109.321 680.232 Q110.223 678.473 110.223 676.783 Q110.223 674.029 108.279 672.293 Q106.358 670.556 103.256 670.556 Q101.057 670.556 98.603 671.32 Q96.1725 672.084 93.3947 673.635 L93.3947 668.913 Q96.2188 667.779 98.6724 667.2 Q101.126 666.621 103.163 666.621 Q108.534 666.621 111.728 669.306 Q114.922 671.992 114.922 676.482 Q114.922 678.612 114.112 680.533 Q113.325 682.431 111.219 685.024 Q110.64 685.695 107.538 688.913 Q104.436 692.107 98.7882 697.871 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M134.922 670.325 Q131.311 670.325 129.482 673.89 Q127.677 677.431 127.677 684.561 Q127.677 691.667 129.482 695.232 Q131.311 698.774 134.922 698.774 Q138.556 698.774 140.362 695.232 Q142.191 691.667 142.191 684.561 Q142.191 677.431 140.362 673.89 Q138.556 670.325 134.922 670.325 M134.922 666.621 Q140.732 666.621 143.788 671.228 Q146.867 675.811 146.867 684.561 Q146.867 693.288 143.788 697.894 Q140.732 702.478 134.922 702.478 Q129.112 702.478 126.033 697.894 Q122.978 693.288 122.978 684.561 Q122.978 675.811 126.033 671.228 Q129.112 666.621 134.922 666.621 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M54.9921 530.298 L84.6679 530.298 L84.6679 534.233 L54.9921 534.233 L54.9921 530.298 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M95.5706 543.191 L103.209 543.191 L103.209 516.825 L94.8993 518.492 L94.8993 514.233 L103.163 512.566 L107.839 512.566 L107.839 543.191 L115.478 543.191 L115.478 547.126 L95.5706 547.126 L95.5706 543.191 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M134.922 515.645 Q131.311 515.645 129.482 519.21 Q127.677 522.751 127.677 529.881 Q127.677 536.987 129.482 540.552 Q131.311 544.094 134.922 544.094 Q138.556 544.094 140.362 540.552 Q142.191 536.987 142.191 529.881 Q142.191 522.751 140.362 519.21 Q138.556 515.645 134.922 515.645 M134.922 511.941 Q140.732 511.941 143.788 516.548 Q146.867 521.131 146.867 529.881 Q146.867 538.608 143.788 543.214 Q140.732 547.797 134.922 547.797 Q129.112 547.797 126.033 543.214 Q122.978 538.608 122.978 529.881 Q122.978 521.131 126.033 516.548 Q129.112 511.941 134.922 511.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M134.922 360.965 Q131.311 360.965 129.482 364.529 Q127.677 368.071 127.677 375.201 Q127.677 382.307 129.482 385.872 Q131.311 389.414 134.922 389.414 Q138.556 389.414 140.362 385.872 Q142.191 382.307 142.191 375.201 Q142.191 368.071 140.362 364.529 Q138.556 360.965 134.922 360.965 M134.922 357.261 Q140.732 357.261 143.788 361.867 Q146.867 366.451 146.867 375.201 Q146.867 383.928 143.788 388.534 Q140.732 393.117 134.922 393.117 Q129.112 393.117 126.033 388.534 Q122.978 383.928 122.978 375.201 Q122.978 366.451 126.033 361.867 Q129.112 357.261 134.922 357.261 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M95.5706 233.831 L103.209 233.831 L103.209 207.465 L94.8993 209.132 L94.8993 204.873 L103.163 203.206 L107.839 203.206 L107.839 233.831 L115.478 233.831 L115.478 237.766 L95.5706 237.766 L95.5706 233.831 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M134.922 206.285 Q131.311 206.285 129.482 209.849 Q127.677 213.391 127.677 220.521 Q127.677 227.627 129.482 231.192 Q131.311 234.733 134.922 234.733 Q138.556 234.733 140.362 231.192 Q142.191 227.627 142.191 220.521 Q142.191 213.391 140.362 209.849 Q138.556 206.285 134.922 206.285 M134.922 202.581 Q140.732 202.581 143.788 207.187 Q146.867 211.771 146.867 220.521 Q146.867 229.247 143.788 233.854 Q140.732 238.437 134.922 238.437 Q129.112 238.437 126.033 233.854 Q122.978 229.247 122.978 220.521 Q122.978 211.771 126.033 207.187 Q129.112 202.581 134.922 202.581 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M98.7882 79.1505 L115.108 79.1505 L115.108 83.0857 L93.1632 83.0857 L93.1632 79.1505 Q95.8252 76.3959 100.409 71.7663 Q105.015 67.1136 106.196 65.771 Q108.441 63.2479 109.321 61.5118 Q110.223 59.7525 110.223 58.0627 Q110.223 55.3081 108.279 53.572 Q106.358 51.8359 103.256 51.8359 Q101.057 51.8359 98.603 52.5998 Q96.1725 53.3636 93.3947 54.9146 L93.3947 50.1924 Q96.2188 49.0581 98.6724 48.4794 Q101.126 47.9007 103.163 47.9007 Q108.534 47.9007 111.728 50.5859 Q114.922 53.2711 114.922 57.7618 Q114.922 59.8914 114.112 61.8127 Q113.325 63.7108 111.219 66.3034 Q110.64 66.9747 107.538 70.1923 Q104.436 73.3867 98.7882 79.1505 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip850)" d="M134.922 51.6044 Q131.311 51.6044 129.482 55.1692 Q127.677 58.7108 127.677 65.8404 Q127.677 72.9469 129.482 76.5117 Q131.311 80.0533 134.922 80.0533 Q138.556 80.0533 140.362 76.5117 Q142.191 72.9469 142.191 65.8404 Q142.191 58.7108 140.362 55.1692 Q138.556 51.6044 134.922 51.6044 M134.922 47.9007 Q140.732 47.9007 143.788 52.5072 Q146.867 57.0905 146.867 65.8404 Q146.867 74.5672 143.788 79.1737 Q140.732 83.757 134.922 83.757 Q129.112 83.757 126.033 79.1737 Q122.978 74.5672 122.978 65.8404 Q122.978 57.0905 126.033 52.5072 Q129.112 47.9007 134.922 47.9007 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip852)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1016.49,65.8057 1016.49,684.526 "/>
<polyline clip-path="url(#clip852)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="707.131,684.526 707.131,65.8057 "/>
<polyline clip-path="url(#clip852)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1171.17,529.846 552.451,529.846 "/>
<polyline clip-path="url(#clip852)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="552.451,220.486 1171.17,220.486 "/>
</svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA oepersist_js_state·has_pluto_hook_features§cell_id$0393dd3a-1a06-11eb-18a9-494ae7a26bc0depends_on_disabled_cells§runtime8fpublished_object_keysdepends_on_skipped_cells§errored$ec698eb0-19c3-11eb-340a-e319abb8ebb5queued¤logsrunning¦outputbody)correct (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA qpersist_js_state·has_pluto_hook_features§cell_id$ec698eb0-19c3-11eb-340a-e319abb8ebb5depends_on_disabled_cells§runtime 
Ppublished_object_keysdepends_on_skipped_cells§errored$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8queued¤logsrunning¦outputbodyprefixPhotonelementspprefixFloat64elements0.0text/plain0.0text/plaintypeArrayprefix_shortobjectidda38eaa7350a82f7!application/vnd.pluto.tree+objectlprefixFloat64elements1.0text/plain0.0text/plaintypeArrayprefix_shortobjectid95b5fe24ac04b6cf!application/vnd.pluto.tree+objectior1.0text/plaintypestructprefix_shortPhotonobjectidd9757d25c8fb7ef5mime!application/vnd.pluto.tree+objectrootassigneetest_lens_photonlast_run_timestampA pDpersist_js_state·has_pluto_hook_features§cell_id$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8depends_on_disabled_cells§runtimeH*published_object_keysdepends_on_skipped_cells§errored$19cf420e-1c7c-11eb-1cb8-dd939fee1276queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA gE<qpersist_js_state·has_pluto_hook_features§cell_id$19cf420e-1c7c-11eb-1cb8-dd939fee1276depends_on_disabled_cells§runtime5еpublished_object_keysdepends_on_skipped_cells§errored$71dc652e-1c9c-11eb-396c-cfd9ee2261fequeued¤logsrunning¦outputbody<div class="markdown"><p>👉 Change the definition of <code>test_sphere</code> to test different situations:</p>
<ul>
<li><p>Hit the circle</p>
</li>
<li><p>Miss the circle</p>
</li>
<li><p>Start inside the cricle &#40;you should hit the exit boundary&#41;</p>
</li>
</ul>
</div>mimetext/htmlrootassigneelast_run_timestampA gGxpersist_js_state·has_pluto_hook_features§cell_id$71dc652e-1c9c-11eb-396c-cfd9ee2261fedepends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$ac9bafaa-1ac4-11eb-16c4-0df8133f9c98queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA gBhpersist_js_state·has_pluto_hook_features§cell_id$ac9bafaa-1ac4-11eb-16c4-0df8133f9c98depends_on_disabled_cells§runtime6published_object_keysdepends_on_skipped_cells§errored$dced1fd0-1c9e-11eb-3226-17dc1e09e018queued¤logsrunning¦outputbodyُ<div class="markdown"><p>To test your code, modify the definition of <code>test_lens_photon</code> and <code>test_lens</code> below.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gHpersist_js_state·has_pluto_hook_features§cell_id$dced1fd0-1c9e-11eb-3226-17dc1e09e018depends_on_disabled_cells§runtime 5published_object_keysdepends_on_skipped_cells§errored$a306e880-19eb-11eb-0ff1-d7ef49777f63queued¤logsrunning¦outputbodyprefixIntersection{Wall}elementsobjectprefixWallelementspositionprefixFloat64elements8.0text/plain-1.0text/plaintypeArrayprefix_shortobjectidcb5693189533ec6e!application/vnd.pluto.tree+objectnormalprefixFloat64elements-0.948683text/plain0.316228text/plaintypeArrayprefix_shortobjectid1ec3964025f3aa0!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidcfcbe35619eca23c!application/vnd.pluto.tree+objectdistance10.1010110601524text/plainpointprefixFloat64elements5.94446text/plain-7.16663text/plaintypeArrayprefix_shortobjectid24e3df91cfbdc73f!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectid85efbaae2a7ed61bmime!application/vnd.pluto.tree+objectrootassigneetest_intersectionlast_run_timestampA p,persist_js_state·has_pluto_hook_features§cell_id$a306e880-19eb-11eb-0ff1-d7ef49777f63depends_on_disabled_cells§runtimeEpublished_object_keysdepends_on_skipped_cells§errored$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7equeued¤logsrunning¦outputbodyA<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600">
<defs>
  <clipPath id="clip290">
    <rect x="0" y="0" width="2400" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip290)" d="M0 1600 L2400 1600 L2400 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip291">
    <rect x="480" y="0" width="1681" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip290)" d="M546.209 1486.45 L1985.41 1486.45 L1985.41 47.2441 L546.209 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip292">
    <rect x="546" y="47" width="1440" height="1440"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="611.628,1486.45 611.628,47.2441 "/>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="938.72,1486.45 938.72,47.2441 "/>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1265.81,1486.45 1265.81,47.2441 "/>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1592.9,1486.45 1592.9,47.2441 "/>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1919.99,1486.45 1919.99,47.2441 "/>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,1421.03 1985.41,1421.03 "/>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,1093.94 1985.41,1093.94 "/>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,766.846 1985.41,766.846 "/>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,439.754 1985.41,439.754 "/>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,112.662 1985.41,112.662 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1486.45 1985.41,1486.45 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="611.628,1486.45 611.628,1467.55 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="938.72,1486.45 938.72,1467.55 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1265.81,1486.45 1265.81,1467.55 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1592.9,1486.45 1592.9,1467.55 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1919.99,1486.45 1919.99,1467.55 "/>
<path clip-path="url(#clip290)" d="M565.69 1532.02 L595.366 1532.02 L595.366 1535.95 L565.69 1535.95 L565.69 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M606.269 1544.91 L613.908 1544.91 L613.908 1518.55 L605.598 1520.21 L605.598 1515.95 L613.862 1514.29 L618.537 1514.29 L618.537 1544.91 L626.176 1544.91 L626.176 1548.85 L606.269 1548.85 L606.269 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M645.621 1517.37 Q642.01 1517.37 640.181 1520.93 Q638.375 1524.47 638.375 1531.6 Q638.375 1538.71 640.181 1542.27 Q642.01 1545.82 645.621 1545.82 Q649.255 1545.82 651.06 1542.27 Q652.889 1538.71 652.889 1531.6 Q652.889 1524.47 651.06 1520.93 Q649.255 1517.37 645.621 1517.37 M645.621 1513.66 Q651.431 1513.66 654.486 1518.27 Q657.565 1522.85 657.565 1531.6 Q657.565 1540.33 654.486 1544.94 Q651.431 1549.52 645.621 1549.52 Q639.81 1549.52 636.732 1544.94 Q633.676 1540.33 633.676 1531.6 Q633.676 1522.85 636.732 1518.27 Q639.81 1513.66 645.621 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M908.361 1532.02 L938.037 1532.02 L938.037 1535.95 L908.361 1535.95 L908.361 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M948.175 1514.29 L966.532 1514.29 L966.532 1518.22 L952.458 1518.22 L952.458 1526.7 Q953.476 1526.35 954.495 1526.19 Q955.513 1526 956.532 1526 Q962.319 1526 965.699 1529.17 Q969.078 1532.34 969.078 1537.76 Q969.078 1543.34 965.606 1546.44 Q962.134 1549.52 955.814 1549.52 Q953.638 1549.52 951.37 1549.15 Q949.125 1548.78 946.717 1548.04 L946.717 1543.34 Q948.8 1544.47 951.023 1545.03 Q953.245 1545.58 955.722 1545.58 Q959.726 1545.58 962.064 1543.48 Q964.402 1541.37 964.402 1537.76 Q964.402 1534.15 962.064 1532.04 Q959.726 1529.94 955.722 1529.94 Q953.847 1529.94 951.972 1530.35 Q950.12 1530.77 948.175 1531.65 L948.175 1514.29 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M1265.81 1517.37 Q1262.2 1517.37 1260.37 1520.93 Q1258.57 1524.47 1258.57 1531.6 Q1258.57 1538.71 1260.37 1542.27 Q1262.2 1545.82 1265.81 1545.82 Q1269.45 1545.82 1271.25 1542.27 Q1273.08 1538.71 1273.08 1531.6 Q1273.08 1524.47 1271.25 1520.93 Q1269.45 1517.37 1265.81 1517.37 M1265.81 1513.66 Q1271.62 1513.66 1274.68 1518.27 Q1277.76 1522.85 1277.76 1531.6 Q1277.76 1540.33 1274.68 1544.94 Q1271.62 1549.52 1265.81 1549.52 Q1260 1549.52 1256.92 1544.94 Q1253.87 1540.33 1253.87 1531.6 Q1253.87 1522.85 1256.92 1518.27 Q1260 1513.66 1265.81 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M1583.18 1514.29 L1601.54 1514.29 L1601.54 1518.22 L1587.46 1518.22 L1587.46 1526.7 Q1588.48 1526.35 1589.5 1526.19 Q1590.52 1526 1591.54 1526 Q1597.32 1526 1600.7 1529.17 Q1604.08 1532.34 1604.08 1537.76 Q1604.08 1543.34 1600.61 1546.44 Q1597.14 1549.52 1590.82 1549.52 Q1588.64 1549.52 1586.38 1549.15 Q1584.13 1548.78 1581.72 1548.04 L1581.72 1543.34 Q1583.81 1544.47 1586.03 1545.03 Q1588.25 1545.58 1590.73 1545.58 Q1594.73 1545.58 1597.07 1543.48 Q1599.41 1541.37 1599.41 1537.76 Q1599.41 1534.15 1597.07 1532.04 Q1594.73 1529.94 1590.73 1529.94 Q1588.85 1529.94 1586.98 1530.35 Q1585.13 1530.77 1583.18 1531.65 L1583.18 1514.29 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M1894.68 1544.91 L1902.32 1544.91 L1902.32 1518.55 L1894.01 1520.21 L1894.01 1515.95 L1902.27 1514.29 L1906.95 1514.29 L1906.95 1544.91 L1914.59 1544.91 L1914.59 1548.85 L1894.68 1548.85 L1894.68 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M1934.03 1517.37 Q1930.42 1517.37 1928.59 1520.93 Q1926.79 1524.47 1926.79 1531.6 Q1926.79 1538.71 1928.59 1542.27 Q1930.42 1545.82 1934.03 1545.82 Q1937.67 1545.82 1939.47 1542.27 Q1941.3 1538.71 1941.3 1531.6 Q1941.3 1524.47 1939.47 1520.93 Q1937.67 1517.37 1934.03 1517.37 M1934.03 1513.66 Q1939.84 1513.66 1942.9 1518.27 Q1945.98 1522.85 1945.98 1531.6 Q1945.98 1540.33 1942.9 1544.94 Q1939.84 1549.52 1934.03 1549.52 Q1928.22 1549.52 1925.15 1544.94 Q1922.09 1540.33 1922.09 1531.6 Q1922.09 1522.85 1925.15 1518.27 Q1928.22 1513.66 1934.03 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1486.45 546.209,47.2441 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1421.03 558.72,1421.03 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1093.94 558.72,1093.94 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,766.846 558.72,766.846 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,439.754 558.72,439.754 "/>
<polyline clip-path="url(#clip290)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,112.662 558.72,112.662 "/>
<path clip-path="url(#clip290)" d="M418.335 1421.48 L448.011 1421.48 L448.011 1425.42 L418.335 1425.42 L418.335 1421.48 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M458.913 1434.37 L466.552 1434.37 L466.552 1408.01 L458.242 1409.68 L458.242 1405.42 L466.506 1403.75 L471.182 1403.75 L471.182 1434.37 L478.821 1434.37 L478.821 1438.31 L458.913 1438.31 L458.913 1434.37 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M498.265 1406.83 Q494.654 1406.83 492.825 1410.39 Q491.02 1413.93 491.02 1421.06 Q491.02 1428.17 492.825 1431.74 Q494.654 1435.28 498.265 1435.28 Q501.899 1435.28 503.705 1431.74 Q505.533 1428.17 505.533 1421.06 Q505.533 1413.93 503.705 1410.39 Q501.899 1406.83 498.265 1406.83 M498.265 1403.12 Q504.075 1403.12 507.131 1407.73 Q510.209 1412.31 510.209 1421.06 Q510.209 1429.79 507.131 1434.4 Q504.075 1438.98 498.265 1438.98 Q492.455 1438.98 489.376 1434.4 Q486.321 1429.79 486.321 1421.06 Q486.321 1412.31 489.376 1407.73 Q492.455 1403.12 498.265 1403.12 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M449.492 1094.39 L479.168 1094.39 L479.168 1098.32 L449.492 1098.32 L449.492 1094.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M489.307 1076.66 L507.663 1076.66 L507.663 1080.59 L493.589 1080.59 L493.589 1089.07 Q494.608 1088.72 495.626 1088.56 Q496.645 1088.37 497.663 1088.37 Q503.45 1088.37 506.83 1091.54 Q510.209 1094.71 510.209 1100.13 Q510.209 1105.71 506.737 1108.81 Q503.265 1111.89 496.946 1111.89 Q494.77 1111.89 492.501 1111.52 Q490.256 1111.15 487.848 1110.41 L487.848 1105.71 Q489.932 1106.84 492.154 1107.4 Q494.376 1107.95 496.853 1107.95 Q500.858 1107.95 503.196 1105.85 Q505.533 1103.74 505.533 1100.13 Q505.533 1096.52 503.196 1094.41 Q500.858 1092.31 496.853 1092.31 Q494.978 1092.31 493.103 1092.72 Q491.251 1093.14 489.307 1094.02 L489.307 1076.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M498.265 752.645 Q494.654 752.645 492.825 756.209 Q491.02 759.751 491.02 766.881 Q491.02 773.987 492.825 777.552 Q494.654 781.094 498.265 781.094 Q501.899 781.094 503.705 777.552 Q505.533 773.987 505.533 766.881 Q505.533 759.751 503.705 756.209 Q501.899 752.645 498.265 752.645 M498.265 748.941 Q504.075 748.941 507.131 753.547 Q510.209 758.131 510.209 766.881 Q510.209 775.608 507.131 780.214 Q504.075 784.797 498.265 784.797 Q492.455 784.797 489.376 780.214 Q486.321 775.608 486.321 766.881 Q486.321 758.131 489.376 753.547 Q492.455 748.941 498.265 748.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M489.307 422.474 L507.663 422.474 L507.663 426.409 L493.589 426.409 L493.589 434.882 Q494.608 434.534 495.626 434.372 Q496.645 434.187 497.663 434.187 Q503.45 434.187 506.83 437.358 Q510.209 440.53 510.209 445.946 Q510.209 451.525 506.737 454.627 Q503.265 457.706 496.946 457.706 Q494.77 457.706 492.501 457.335 Q490.256 456.965 487.848 456.224 L487.848 451.525 Q489.932 452.659 492.154 453.215 Q494.376 453.77 496.853 453.77 Q500.858 453.77 503.196 451.664 Q505.533 449.557 505.533 445.946 Q505.533 442.335 503.196 440.229 Q500.858 438.122 496.853 438.122 Q494.978 438.122 493.103 438.539 Q491.251 438.956 489.307 439.835 L489.307 422.474 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M458.913 126.007 L466.552 126.007 L466.552 99.6417 L458.242 101.308 L458.242 97.0491 L466.506 95.3824 L471.182 95.3824 L471.182 126.007 L478.821 126.007 L478.821 129.942 L458.913 129.942 L458.913 126.007 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip290)" d="M498.265 98.4611 Q494.654 98.4611 492.825 102.026 Q491.02 105.568 491.02 112.697 Q491.02 119.804 492.825 123.368 Q494.654 126.91 498.265 126.91 Q501.899 126.91 503.705 123.368 Q505.533 119.804 505.533 112.697 Q505.533 105.568 503.705 102.026 Q501.899 98.4611 498.265 98.4611 M498.265 94.7575 Q504.075 94.7575 507.131 99.3639 Q510.209 103.947 510.209 112.697 Q510.209 121.424 507.131 126.03 Q504.075 130.614 498.265 130.614 Q492.455 130.614 489.376 126.03 Q486.321 121.424 486.321 112.697 Q486.321 103.947 489.376 99.3639 Q492.455 94.7575 498.265 94.7575 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip292)" d="M1789.16 864.974 L1787.55 839.877 L1782.74 815.193 L1774.82 791.325 L1763.9 768.668 L1750.18 747.591 L1733.88 728.442 L1715.27 711.535 L1694.64 697.147 L1672.34 685.515 L1648.74 676.83 L1624.23 671.234 L1599.19 668.819 L1574.06 669.625 L1549.23 673.639 L1525.12 680.794 L1502.13 690.974 L1480.62 704.011 L1460.96 719.69 L1443.47 737.755 L1428.42 757.91 L1416.08 779.822 L1406.65 803.132 L1400.27 827.458 L1397.05 852.399 L1397.05 877.548 L1400.27 902.489 L1406.65 926.815 L1416.08 950.125 L1428.42 972.037 L1443.47 992.192 L1460.96 1010.26 L1480.62 1025.94 L1502.13 1038.97 L1525.12 1049.15 L1549.23 1056.31 L1574.06 1060.32 L1599.19 1061.13 L1624.23 1058.71 L1648.74 1053.12 L1672.34 1044.43 L1694.64 1032.8 L1715.27 1018.41 L1733.88 1001.5 L1750.18 982.356 L1763.9 961.279 L1774.82 938.622 L1782.74 914.755 L1787.55 890.07 L1789.16 864.974 L1789.16 864.974  Z" fill="#009af9" fill-rule="evenodd" fill-opacity="0.2"/>
<polyline clip-path="url(#clip292)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1789.16,864.974 1787.55,839.877 1782.74,815.193 1774.82,791.325 1763.9,768.668 1750.18,747.591 1733.88,728.442 1715.27,711.535 1694.64,697.147 1672.34,685.515 1648.74,676.83 1624.23,671.234 1599.19,668.819 1574.06,669.625 1549.23,673.639 1525.12,680.794 1502.13,690.974 1480.62,704.011 1460.96,719.69 1443.47,737.755 1428.42,757.91 1416.08,779.822 1406.65,803.132 1400.27,827.458 1397.05,852.399 1397.05,877.548 1400.27,902.489 1406.65,926.815 1416.08,950.125 1428.42,972.037 1443.47,992.192 1460.96,1010.26 1480.62,1025.94 1502.13,1038.97 1525.12,1049.15 1549.23,1056.31 1574.06,1060.32 1599.19,1061.13 1624.23,1058.71 1648.74,1053.12 1672.34,1044.43 1694.64,1032.8 1715.27,1018.41 1733.88,1001.5 1750.18,982.356 1763.9,961.279 1774.82,938.622 1782.74,914.755 1787.55,890.07 1789.16,864.974 1789.16,864.974 "/>
<polyline clip-path="url(#clip292)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1919.99,-541.521 1919.99,2075.21 "/>
<polyline clip-path="url(#clip292)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="611.628,2075.21 611.628,-541.521 "/>
<polyline clip-path="url(#clip292)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2574.18,1421.03 -42.5558,1421.03 "/>
<polyline clip-path="url(#clip292)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="-42.5558,112.662 2574.18,112.662 "/>
<polyline clip-path="url(#clip292)" style="stroke:#ff0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:20; stroke-opacity:1; fill:none" points="1265.81,766.846 1422.94,766.846 1786.77,834.467 1919.99,885.76 1773.31,942.236 "/>
</svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA q+ðpersist_js_state·has_pluto_hook_features§cell_id$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7edepends_on_disabled_cells§runtimeⱵpublished_object_keysdepends_on_skipped_cells§errored$ec31dce0-19c3-11eb-1487-23cc20cd5277queued¤logsrunning¦outputbody%hint (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA qEpersist_js_state·has_pluto_hook_features§cell_id$ec31dce0-19c3-11eb-1487-23cc20cd5277depends_on_disabled_cells§runtime 	lpublished_object_keysdepends_on_skipped_cells§errored$9df1d0f2-1ac3-11eb-0eac-d90eccca669cqueued¤logsrunning¦outputbodyprefixIntersection{Wall}elementsobjectprefixWallelementspositionprefixFloat64elements8.0text/plain-1.0text/plaintypeArrayprefix_shortobjectidcb5693189533ec6e!application/vnd.pluto.tree+objectnormalprefixFloat64elements-0.948683text/plain0.316228text/plaintypeArrayprefix_shortobjectid1ec3964025f3aa0!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidcfcbe35619eca23c!application/vnd.pluto.tree+objectdistance3.0text/plainpointprefixFloat64elements1.0text/plain2.0text/plaintypeArrayprefix_shortobjectid255c2b4d4abfee2a!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectid9a85ec901bb292e5mime!application/vnd.pluto.tree+objectrootassigneetest_intersection_1last_run_timestampA l8persist_js_state·has_pluto_hook_features§cell_id$9df1d0f2-1ac3-11eb-0eac-d90eccca669cdepends_on_disabled_cells§runtime@published_object_keysdepends_on_skipped_cells§errored$fb70cc0c-1c7f-11eb-31b5-87b168a66e19queued¤logsrunning¦outputbodyȵ<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600">
<defs>
  <clipPath id="clip170">
    <rect x="0" y="0" width="2400" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip170)" d="M0 1600 L2400 1600 L2400 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip171">
    <rect x="480" y="0" width="1681" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip170)" d="M178.867 1486.45 L2352.76 1486.45 L2352.76 47.2441 L178.867 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip172">
    <rect x="178" y="47" width="2175" height="1440"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="247.507,1486.45 247.507,47.2441 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="586.942,1486.45 586.942,47.2441 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="926.376,1486.45 926.376,47.2441 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1265.81,1486.45 1265.81,47.2441 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1605.25,1486.45 1605.25,47.2441 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1944.68,1486.45 1944.68,47.2441 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2284.12,1486.45 2284.12,47.2441 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,1445.72 2352.76,1445.72 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,1106.28 2352.76,1106.28 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,766.846 2352.76,766.846 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,427.411 2352.76,427.411 "/>
<polyline clip-path="url(#clip172)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,87.9763 2352.76,87.9763 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1486.45 2352.76,1486.45 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="247.507,1486.45 247.507,1467.55 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="586.942,1486.45 586.942,1467.55 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="926.376,1486.45 926.376,1467.55 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1265.81,1486.45 1265.81,1467.55 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1605.25,1486.45 1605.25,1467.55 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1944.68,1486.45 1944.68,1467.55 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2284.12,1486.45 2284.12,1467.55 "/>
<path clip-path="url(#clip170)" d="M201.569 1532.02 L231.245 1532.02 L231.245 1535.95 L201.569 1535.95 L201.569 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M255.504 1530.21 Q258.861 1530.93 260.736 1533.2 Q262.634 1535.47 262.634 1538.8 Q262.634 1543.92 259.115 1546.72 Q255.597 1549.52 249.115 1549.52 Q246.94 1549.52 244.625 1549.08 Q242.333 1548.66 239.879 1547.81 L239.879 1543.29 Q241.824 1544.43 244.139 1545.01 Q246.453 1545.58 248.977 1545.58 Q253.375 1545.58 255.666 1543.85 Q257.981 1542.11 257.981 1538.8 Q257.981 1535.75 255.828 1534.03 Q253.699 1532.3 249.879 1532.3 L245.852 1532.3 L245.852 1528.45 L250.065 1528.45 Q253.514 1528.45 255.342 1527.09 Q257.171 1525.7 257.171 1523.11 Q257.171 1520.45 255.273 1519.03 Q253.398 1517.6 249.879 1517.6 Q247.958 1517.6 245.759 1518.01 Q243.56 1518.43 240.921 1519.31 L240.921 1515.14 Q243.583 1514.4 245.898 1514.03 Q248.236 1513.66 250.296 1513.66 Q255.62 1513.66 258.722 1516.09 Q261.824 1518.5 261.824 1522.62 Q261.824 1525.49 260.18 1527.48 Q258.537 1529.45 255.504 1530.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M281.5 1517.37 Q277.888 1517.37 276.06 1520.93 Q274.254 1524.47 274.254 1531.6 Q274.254 1538.71 276.06 1542.27 Q277.888 1545.82 281.5 1545.82 Q285.134 1545.82 286.939 1542.27 Q288.768 1538.71 288.768 1531.6 Q288.768 1524.47 286.939 1520.93 Q285.134 1517.37 281.5 1517.37 M281.5 1513.66 Q287.31 1513.66 290.365 1518.27 Q293.444 1522.85 293.444 1531.6 Q293.444 1540.33 290.365 1544.94 Q287.31 1549.52 281.5 1549.52 Q275.689 1549.52 272.611 1544.94 Q269.555 1540.33 269.555 1531.6 Q269.555 1522.85 272.611 1518.27 Q275.689 1513.66 281.5 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M541.004 1532.02 L570.68 1532.02 L570.68 1535.95 L541.004 1535.95 L541.004 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M584.8 1544.91 L601.12 1544.91 L601.12 1548.85 L579.175 1548.85 L579.175 1544.91 Q581.837 1542.16 586.421 1537.53 Q591.027 1532.88 592.208 1531.53 Q594.453 1529.01 595.333 1527.27 Q596.235 1525.51 596.235 1523.82 Q596.235 1521.07 594.291 1519.33 Q592.37 1517.6 589.268 1517.6 Q587.069 1517.6 584.615 1518.36 Q582.185 1519.13 579.407 1520.68 L579.407 1515.95 Q582.231 1514.82 584.685 1514.24 Q587.138 1513.66 589.175 1513.66 Q594.546 1513.66 597.74 1516.35 Q600.935 1519.03 600.935 1523.52 Q600.935 1525.65 600.124 1527.57 Q599.337 1529.47 597.231 1532.07 Q596.652 1532.74 593.55 1535.95 Q590.448 1539.15 584.8 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M620.934 1517.37 Q617.323 1517.37 615.495 1520.93 Q613.689 1524.47 613.689 1531.6 Q613.689 1538.71 615.495 1542.27 Q617.323 1545.82 620.934 1545.82 Q624.569 1545.82 626.374 1542.27 Q628.203 1538.71 628.203 1531.6 Q628.203 1524.47 626.374 1520.93 Q624.569 1517.37 620.934 1517.37 M620.934 1513.66 Q626.745 1513.66 629.8 1518.27 Q632.879 1522.85 632.879 1531.6 Q632.879 1540.33 629.8 1544.94 Q626.745 1549.52 620.934 1549.52 Q615.124 1549.52 612.046 1544.94 Q608.99 1540.33 608.99 1531.6 Q608.99 1522.85 612.046 1518.27 Q615.124 1513.66 620.934 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M880.439 1532.02 L910.115 1532.02 L910.115 1535.95 L880.439 1535.95 L880.439 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M921.018 1544.91 L928.656 1544.91 L928.656 1518.55 L920.346 1520.21 L920.346 1515.95 L928.61 1514.29 L933.286 1514.29 L933.286 1544.91 L940.925 1544.91 L940.925 1548.85 L921.018 1548.85 L921.018 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M960.369 1517.37 Q956.758 1517.37 954.93 1520.93 Q953.124 1524.47 953.124 1531.6 Q953.124 1538.71 954.93 1542.27 Q956.758 1545.82 960.369 1545.82 Q964.004 1545.82 965.809 1542.27 Q967.638 1538.71 967.638 1531.6 Q967.638 1524.47 965.809 1520.93 Q964.004 1517.37 960.369 1517.37 M960.369 1513.66 Q966.179 1513.66 969.235 1518.27 Q972.314 1522.85 972.314 1531.6 Q972.314 1540.33 969.235 1544.94 Q966.179 1549.52 960.369 1549.52 Q954.559 1549.52 951.48 1544.94 Q948.425 1540.33 948.425 1531.6 Q948.425 1522.85 951.48 1518.27 Q954.559 1513.66 960.369 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1265.81 1517.37 Q1262.2 1517.37 1260.37 1520.93 Q1258.57 1524.47 1258.57 1531.6 Q1258.57 1538.71 1260.37 1542.27 Q1262.2 1545.82 1265.81 1545.82 Q1269.45 1545.82 1271.25 1542.27 Q1273.08 1538.71 1273.08 1531.6 Q1273.08 1524.47 1271.25 1520.93 Q1269.45 1517.37 1265.81 1517.37 M1265.81 1513.66 Q1271.62 1513.66 1274.68 1518.27 Q1277.76 1522.85 1277.76 1531.6 Q1277.76 1540.33 1274.68 1544.94 Q1271.62 1549.52 1265.81 1549.52 Q1260 1549.52 1256.92 1544.94 Q1253.87 1540.33 1253.87 1531.6 Q1253.87 1522.85 1256.92 1518.27 Q1260 1513.66 1265.81 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1579.93 1544.91 L1587.57 1544.91 L1587.57 1518.55 L1579.26 1520.21 L1579.26 1515.95 L1587.53 1514.29 L1592.2 1514.29 L1592.2 1544.91 L1599.84 1544.91 L1599.84 1548.85 L1579.93 1548.85 L1579.93 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1619.29 1517.37 Q1615.67 1517.37 1613.85 1520.93 Q1612.04 1524.47 1612.04 1531.6 Q1612.04 1538.71 1613.85 1542.27 Q1615.67 1545.82 1619.29 1545.82 Q1622.92 1545.82 1624.73 1542.27 Q1626.55 1538.71 1626.55 1531.6 Q1626.55 1524.47 1624.73 1520.93 Q1622.92 1517.37 1619.29 1517.37 M1619.29 1513.66 Q1625.1 1513.66 1628.15 1518.27 Q1631.23 1522.85 1631.23 1531.6 Q1631.23 1540.33 1628.15 1544.94 Q1625.1 1549.52 1619.29 1549.52 Q1613.48 1549.52 1610.4 1544.94 Q1607.34 1540.33 1607.34 1531.6 Q1607.34 1522.85 1610.4 1518.27 Q1613.48 1513.66 1619.29 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1923.45 1544.91 L1939.77 1544.91 L1939.77 1548.85 L1917.83 1548.85 L1917.83 1544.91 Q1920.49 1542.16 1925.07 1537.53 Q1929.68 1532.88 1930.86 1531.53 Q1933.11 1529.01 1933.99 1527.27 Q1934.89 1525.51 1934.89 1523.82 Q1934.89 1521.07 1932.94 1519.33 Q1931.02 1517.6 1927.92 1517.6 Q1925.72 1517.6 1923.27 1518.36 Q1920.84 1519.13 1918.06 1520.68 L1918.06 1515.95 Q1920.88 1514.82 1923.34 1514.24 Q1925.79 1513.66 1927.83 1513.66 Q1933.2 1513.66 1936.39 1516.35 Q1939.59 1519.03 1939.59 1523.52 Q1939.59 1525.65 1938.78 1527.57 Q1937.99 1529.47 1935.88 1532.07 Q1935.31 1532.74 1932.2 1535.95 Q1929.1 1539.15 1923.45 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1959.59 1517.37 Q1955.98 1517.37 1954.15 1520.93 Q1952.34 1524.47 1952.34 1531.6 Q1952.34 1538.71 1954.15 1542.27 Q1955.98 1545.82 1959.59 1545.82 Q1963.22 1545.82 1965.03 1542.27 Q1966.86 1538.71 1966.86 1531.6 Q1966.86 1524.47 1965.03 1520.93 Q1963.22 1517.37 1959.59 1517.37 M1959.59 1513.66 Q1965.4 1513.66 1968.45 1518.27 Q1971.53 1522.85 1971.53 1531.6 Q1971.53 1540.33 1968.45 1544.94 Q1965.4 1549.52 1959.59 1549.52 Q1953.78 1549.52 1950.7 1544.94 Q1947.64 1540.33 1947.64 1531.6 Q1947.64 1522.85 1950.7 1518.27 Q1953.78 1513.66 1959.59 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2272.96 1530.21 Q2276.31 1530.93 2278.19 1533.2 Q2280.09 1535.47 2280.09 1538.8 Q2280.09 1543.92 2276.57 1546.72 Q2273.05 1549.52 2266.57 1549.52 Q2264.39 1549.52 2262.08 1549.08 Q2259.79 1548.66 2257.33 1547.81 L2257.33 1543.29 Q2259.28 1544.43 2261.59 1545.01 Q2263.91 1545.58 2266.43 1545.58 Q2270.83 1545.58 2273.12 1543.85 Q2275.44 1542.11 2275.44 1538.8 Q2275.44 1535.75 2273.28 1534.03 Q2271.15 1532.3 2267.33 1532.3 L2263.31 1532.3 L2263.31 1528.45 L2267.52 1528.45 Q2270.97 1528.45 2272.8 1527.09 Q2274.63 1525.7 2274.63 1523.11 Q2274.63 1520.45 2272.73 1519.03 Q2270.85 1517.6 2267.33 1517.6 Q2265.41 1517.6 2263.21 1518.01 Q2261.01 1518.43 2258.38 1519.31 L2258.38 1515.14 Q2261.04 1514.4 2263.35 1514.03 Q2265.69 1513.66 2267.75 1513.66 Q2273.07 1513.66 2276.18 1516.09 Q2279.28 1518.5 2279.28 1522.62 Q2279.28 1525.49 2277.63 1527.48 Q2275.99 1529.45 2272.96 1530.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2298.95 1517.37 Q2295.34 1517.37 2293.51 1520.93 Q2291.71 1524.47 2291.71 1531.6 Q2291.71 1538.71 2293.51 1542.27 Q2295.34 1545.82 2298.95 1545.82 Q2302.59 1545.82 2304.39 1542.27 Q2306.22 1538.71 2306.22 1531.6 Q2306.22 1524.47 2304.39 1520.93 Q2302.59 1517.37 2298.95 1517.37 M2298.95 1513.66 Q2304.76 1513.66 2307.82 1518.27 Q2310.9 1522.85 2310.9 1531.6 Q2310.9 1540.33 2307.82 1544.94 Q2304.76 1549.52 2298.95 1549.52 Q2293.14 1549.52 2290.06 1544.94 Q2287.01 1540.33 2287.01 1531.6 Q2287.01 1522.85 2290.06 1518.27 Q2293.14 1513.66 2298.95 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1486.45 178.867,47.2441 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1445.72 197.764,1445.72 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1106.28 197.764,1106.28 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,766.846 197.764,766.846 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,427.411 197.764,427.411 "/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,87.9763 197.764,87.9763 "/>
<path clip-path="url(#clip170)" d="M50.9921 1446.17 L80.6679 1446.17 L80.6679 1450.1 L50.9921 1450.1 L50.9921 1446.17 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M94.7882 1459.06 L111.108 1459.06 L111.108 1463 L89.1632 1463 L89.1632 1459.06 Q91.8252 1456.31 96.4085 1451.68 Q101.015 1447.02 102.196 1445.68 Q104.441 1443.16 105.321 1441.42 Q106.223 1439.66 106.223 1437.97 Q106.223 1435.22 104.279 1433.48 Q102.358 1431.75 99.2558 1431.75 Q97.0567 1431.75 94.603 1432.51 Q92.1725 1433.27 89.3947 1434.82 L89.3947 1430.1 Q92.2188 1428.97 94.6724 1428.39 Q97.1261 1427.81 99.1632 1427.81 Q104.534 1427.81 107.728 1430.5 Q110.922 1433.18 110.922 1437.67 Q110.922 1439.8 110.112 1441.72 Q109.325 1443.62 107.219 1446.21 Q106.64 1446.88 103.538 1450.1 Q100.436 1453.3 94.7882 1459.06 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M130.922 1431.51 Q127.311 1431.51 125.482 1435.08 Q123.677 1438.62 123.677 1445.75 Q123.677 1452.86 125.482 1456.42 Q127.311 1459.96 130.922 1459.96 Q134.556 1459.96 136.362 1456.42 Q138.191 1452.86 138.191 1445.75 Q138.191 1438.62 136.362 1435.08 Q134.556 1431.51 130.922 1431.51 M130.922 1427.81 Q136.732 1427.81 139.788 1432.42 Q142.867 1437 142.867 1445.75 Q142.867 1454.48 139.788 1459.08 Q136.732 1463.67 130.922 1463.67 Q125.112 1463.67 122.033 1459.08 Q118.978 1454.48 118.978 1445.75 Q118.978 1437 122.033 1432.42 Q125.112 1427.81 130.922 1427.81 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M50.9921 1106.73 L80.6679 1106.73 L80.6679 1110.67 L50.9921 1110.67 L50.9921 1106.73 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M91.5706 1119.63 L99.2095 1119.63 L99.2095 1093.26 L90.8993 1094.93 L90.8993 1090.67 L99.1632 1089 L103.839 1089 L103.839 1119.63 L111.478 1119.63 L111.478 1123.56 L91.5706 1123.56 L91.5706 1119.63 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M130.922 1092.08 Q127.311 1092.08 125.482 1095.64 Q123.677 1099.19 123.677 1106.32 Q123.677 1113.42 125.482 1116.99 Q127.311 1120.53 130.922 1120.53 Q134.556 1120.53 136.362 1116.99 Q138.191 1113.42 138.191 1106.32 Q138.191 1099.19 136.362 1095.64 Q134.556 1092.08 130.922 1092.08 M130.922 1088.38 Q136.732 1088.38 139.788 1092.98 Q142.867 1097.57 142.867 1106.32 Q142.867 1115.04 139.788 1119.65 Q136.732 1124.23 130.922 1124.23 Q125.112 1124.23 122.033 1119.65 Q118.978 1115.04 118.978 1106.32 Q118.978 1097.57 122.033 1092.98 Q125.112 1088.38 130.922 1088.38 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M130.922 752.645 Q127.311 752.645 125.482 756.209 Q123.677 759.751 123.677 766.881 Q123.677 773.987 125.482 777.552 Q127.311 781.094 130.922 781.094 Q134.556 781.094 136.362 777.552 Q138.191 773.987 138.191 766.881 Q138.191 759.751 136.362 756.209 Q134.556 752.645 130.922 752.645 M130.922 748.941 Q136.732 748.941 139.788 753.547 Q142.867 758.131 142.867 766.881 Q142.867 775.608 139.788 780.214 Q136.732 784.797 130.922 784.797 Q125.112 784.797 122.033 780.214 Q118.978 775.608 118.978 766.881 Q118.978 758.131 122.033 753.547 Q125.112 748.941 130.922 748.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M91.5706 440.756 L99.2095 440.756 L99.2095 414.39 L90.8993 416.057 L90.8993 411.798 L99.1632 410.131 L103.839 410.131 L103.839 440.756 L111.478 440.756 L111.478 444.691 L91.5706 444.691 L91.5706 440.756 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M130.922 413.21 Q127.311 413.21 125.482 416.775 Q123.677 420.316 123.677 427.446 Q123.677 434.552 125.482 438.117 Q127.311 441.659 130.922 441.659 Q134.556 441.659 136.362 438.117 Q138.191 434.552 138.191 427.446 Q138.191 420.316 136.362 416.775 Q134.556 413.21 130.922 413.21 M130.922 409.506 Q136.732 409.506 139.788 414.113 Q142.867 418.696 142.867 427.446 Q142.867 436.173 139.788 440.779 Q136.732 445.362 130.922 445.362 Q125.112 445.362 122.033 440.779 Q118.978 436.173 118.978 427.446 Q118.978 418.696 122.033 414.113 Q125.112 409.506 130.922 409.506 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M94.7882 101.321 L111.108 101.321 L111.108 105.256 L89.1632 105.256 L89.1632 101.321 Q91.8252 98.5665 96.4085 93.9369 Q101.015 89.2841 102.196 87.9416 Q104.441 85.4184 105.321 83.6823 Q106.223 81.9231 106.223 80.2333 Q106.223 77.4786 104.279 75.7425 Q102.358 74.0064 99.2558 74.0064 Q97.0567 74.0064 94.603 74.7703 Q92.1725 75.5342 89.3947 77.0851 L89.3947 72.3629 Q92.2188 71.2287 94.6724 70.65 Q97.1261 70.0713 99.1632 70.0713 Q104.534 70.0713 107.728 72.7565 Q110.922 75.4416 110.922 79.9323 Q110.922 82.062 110.112 83.9832 Q109.325 85.8814 107.219 88.474 Q106.64 89.1453 103.538 92.3628 Q100.436 95.5573 94.7882 101.321 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M130.922 73.775 Q127.311 73.775 125.482 77.3398 Q123.677 80.8814 123.677 88.011 Q123.677 95.1174 125.482 98.6822 Q127.311 102.224 130.922 102.224 Q134.556 102.224 136.362 98.6822 Q138.191 95.1174 138.191 88.011 Q138.191 80.8814 136.362 77.3398 Q134.556 73.775 130.922 73.775 M130.922 70.0713 Q136.732 70.0713 139.788 74.6777 Q142.867 79.261 142.867 88.011 Q142.867 96.7378 139.788 101.344 Q136.732 105.928 130.922 105.928 Q125.112 105.928 122.033 101.344 Q118.978 96.7378 118.978 88.011 Q118.978 79.261 122.033 74.6777 Q125.112 70.0713 130.922 70.0713 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip172)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1605.25,87.9763 1605.25,1445.72 "/>
<polyline clip-path="url(#clip172)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="926.376,1445.72 926.376,87.9763 "/>
<polyline clip-path="url(#clip172)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1944.68,1106.28 586.942,1106.28 "/>
<polyline clip-path="url(#clip172)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="586.942,427.411 1944.68,427.411 "/>
<polyline clip-path="url(#clip172)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1752.04,156.757 1322.68,1444.82 "/>
<polyline clip-path="url(#clip172)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1367.64,766.846 1428.36,888.286 "/>
<polyline clip-path="url(#clip172)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1428.36,848.037 1428.36,888.286 1396.16,864.136 "/>
<polyline clip-path="url(#clip172)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1428.36,888.286 1367.64,766.846 "/>
<circle clip-path="url(#clip172)" cx="1367.64" cy="766.846" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<polyline clip-path="url(#clip172)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1476.26,984.084 1354.82,1044.8 "/>
<polyline clip-path="url(#clip172)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1395.07,1044.8 1354.82,1044.8 1378.97,1012.6 "/>
<polyline clip-path="url(#clip172)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1354.82,1044.8 1476.26,984.084 "/>
<circle clip-path="url(#clip172)" cx="1476.26" cy="984.084" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<path clip-path="url(#clip170)" d="M1544.67 509.938 L2280.29 509.938 L2280.29 95.2176 L1544.67 95.2176  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<polyline clip-path="url(#clip170)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1544.67,509.938 2280.29,509.938 2280.29,95.2176 1544.67,95.2176 1544.67,509.938 "/>
<polyline clip-path="url(#clip170)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1568.82,147.058 1713.75,147.058 "/>
<path clip-path="url(#clip170)" d="M1737.9 129.778 L1742.62 129.778 L1749.89 158.99 L1757.14 129.778 L1762.39 129.778 L1769.66 158.99 L1776.91 129.778 L1781.65 129.778 L1772.97 164.338 L1767.09 164.338 L1759.8 134.338 L1752.44 164.338 L1746.56 164.338 L1737.9 129.778 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1796.42 151.305 Q1791.26 151.305 1789.27 152.486 Q1787.28 153.666 1787.28 156.514 Q1787.28 158.782 1788.76 160.125 Q1790.26 161.444 1792.83 161.444 Q1796.37 161.444 1798.5 158.944 Q1800.65 156.421 1800.65 152.254 L1800.65 151.305 L1796.42 151.305 M1804.91 149.546 L1804.91 164.338 L1800.65 164.338 L1800.65 160.402 Q1799.2 162.763 1797.02 163.898 Q1794.84 165.009 1791.7 165.009 Q1787.72 165.009 1785.35 162.787 Q1783.02 160.541 1783.02 156.791 Q1783.02 152.416 1785.93 150.194 Q1788.87 147.972 1794.68 147.972 L1800.65 147.972 L1800.65 147.555 Q1800.65 144.615 1798.71 143.018 Q1796.79 141.398 1793.29 141.398 Q1791.07 141.398 1788.97 141.93 Q1786.86 142.463 1784.91 143.527 L1784.91 139.592 Q1787.25 138.69 1789.45 138.25 Q1791.65 137.787 1793.73 137.787 Q1799.36 137.787 1802.14 140.703 Q1804.91 143.62 1804.91 149.546 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1813.69 128.319 L1817.95 128.319 L1817.95 164.338 L1813.69 164.338 L1813.69 128.319 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1826.86 128.319 L1831.12 128.319 L1831.12 164.338 L1826.86 164.338 L1826.86 128.319 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip170)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1568.82,198.898 1713.75,198.898 "/>
<path clip-path="url(#clip170)" d="M1737.9 181.618 L1742.62 181.618 L1749.89 210.83 L1757.14 181.618 L1762.39 181.618 L1769.66 210.83 L1776.91 181.618 L1781.65 181.618 L1772.97 216.178 L1767.09 216.178 L1759.8 186.178 L1752.44 216.178 L1746.56 216.178 L1737.9 181.618 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1796.42 203.145 Q1791.26 203.145 1789.27 204.326 Q1787.28 205.506 1787.28 208.354 Q1787.28 210.622 1788.76 211.965 Q1790.26 213.284 1792.83 213.284 Q1796.37 213.284 1798.5 210.784 Q1800.65 208.261 1800.65 204.094 L1800.65 203.145 L1796.42 203.145 M1804.91 201.386 L1804.91 216.178 L1800.65 216.178 L1800.65 212.242 Q1799.2 214.603 1797.02 215.738 Q1794.84 216.849 1791.7 216.849 Q1787.72 216.849 1785.35 214.627 Q1783.02 212.381 1783.02 208.631 Q1783.02 204.256 1785.93 202.034 Q1788.87 199.812 1794.68 199.812 L1800.65 199.812 L1800.65 199.395 Q1800.65 196.455 1798.71 194.858 Q1796.79 193.238 1793.29 193.238 Q1791.07 193.238 1788.97 193.77 Q1786.86 194.303 1784.91 195.367 L1784.91 191.432 Q1787.25 190.53 1789.45 190.09 Q1791.65 189.627 1793.73 189.627 Q1799.36 189.627 1802.14 192.543 Q1804.91 195.46 1804.91 201.386 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1813.69 180.159 L1817.95 180.159 L1817.95 216.178 L1813.69 216.178 L1813.69 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1826.86 180.159 L1831.12 180.159 L1831.12 216.178 L1826.86 216.178 L1826.86 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip170)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1568.82,250.738 1713.75,250.738 "/>
<path clip-path="url(#clip170)" d="M1737.9 233.458 L1742.62 233.458 L1749.89 262.67 L1757.14 233.458 L1762.39 233.458 L1769.66 262.67 L1776.91 233.458 L1781.65 233.458 L1772.97 268.018 L1767.09 268.018 L1759.8 238.018 L1752.44 268.018 L1746.56 268.018 L1737.9 233.458 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1796.42 254.985 Q1791.26 254.985 1789.27 256.166 Q1787.28 257.346 1787.28 260.194 Q1787.28 262.462 1788.76 263.805 Q1790.26 265.124 1792.83 265.124 Q1796.37 265.124 1798.5 262.624 Q1800.65 260.101 1800.65 255.934 L1800.65 254.985 L1796.42 254.985 M1804.91 253.226 L1804.91 268.018 L1800.65 268.018 L1800.65 264.082 Q1799.2 266.443 1797.02 267.578 Q1794.84 268.689 1791.7 268.689 Q1787.72 268.689 1785.35 266.467 Q1783.02 264.221 1783.02 260.471 Q1783.02 256.096 1785.93 253.874 Q1788.87 251.652 1794.68 251.652 L1800.65 251.652 L1800.65 251.235 Q1800.65 248.295 1798.71 246.698 Q1796.79 245.078 1793.29 245.078 Q1791.07 245.078 1788.97 245.61 Q1786.86 246.143 1784.91 247.207 L1784.91 243.272 Q1787.25 242.37 1789.45 241.93 Q1791.65 241.467 1793.73 241.467 Q1799.36 241.467 1802.14 244.383 Q1804.91 247.3 1804.91 253.226 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1813.69 231.999 L1817.95 231.999 L1817.95 268.018 L1813.69 268.018 L1813.69 231.999 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1826.86 231.999 L1831.12 231.999 L1831.12 268.018 L1826.86 268.018 L1826.86 231.999 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip170)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1568.82,302.578 1713.75,302.578 "/>
<path clip-path="url(#clip170)" d="M1737.9 285.298 L1742.62 285.298 L1749.89 314.51 L1757.14 285.298 L1762.39 285.298 L1769.66 314.51 L1776.91 285.298 L1781.65 285.298 L1772.97 319.858 L1767.09 319.858 L1759.8 289.858 L1752.44 319.858 L1746.56 319.858 L1737.9 285.298 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1796.42 306.825 Q1791.26 306.825 1789.27 308.006 Q1787.28 309.186 1787.28 312.034 Q1787.28 314.302 1788.76 315.645 Q1790.26 316.964 1792.83 316.964 Q1796.37 316.964 1798.5 314.464 Q1800.65 311.941 1800.65 307.774 L1800.65 306.825 L1796.42 306.825 M1804.91 305.066 L1804.91 319.858 L1800.65 319.858 L1800.65 315.922 Q1799.2 318.283 1797.02 319.418 Q1794.84 320.529 1791.7 320.529 Q1787.72 320.529 1785.35 318.307 Q1783.02 316.061 1783.02 312.311 Q1783.02 307.936 1785.93 305.714 Q1788.87 303.492 1794.68 303.492 L1800.65 303.492 L1800.65 303.075 Q1800.65 300.135 1798.71 298.538 Q1796.79 296.918 1793.29 296.918 Q1791.07 296.918 1788.97 297.45 Q1786.86 297.983 1784.91 299.047 L1784.91 295.112 Q1787.25 294.21 1789.45 293.77 Q1791.65 293.307 1793.73 293.307 Q1799.36 293.307 1802.14 296.223 Q1804.91 299.14 1804.91 305.066 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1813.69 283.839 L1817.95 283.839 L1817.95 319.858 L1813.69 319.858 L1813.69 283.839 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1826.86 283.839 L1831.12 283.839 L1831.12 319.858 L1826.86 319.858 L1826.86 283.839 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip170)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1568.82,354.418 1713.75,354.418 "/>
<path clip-path="url(#clip170)" d="M1737.9 337.138 L1742.62 337.138 L1749.89 366.35 L1757.14 337.138 L1762.39 337.138 L1769.66 366.35 L1776.91 337.138 L1781.65 337.138 L1772.97 371.698 L1767.09 371.698 L1759.8 341.698 L1752.44 371.698 L1746.56 371.698 L1737.9 337.138 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1796.42 358.665 Q1791.26 358.665 1789.27 359.846 Q1787.28 361.026 1787.28 363.874 Q1787.28 366.142 1788.76 367.485 Q1790.26 368.804 1792.83 368.804 Q1796.37 368.804 1798.5 366.304 Q1800.65 363.781 1800.65 359.614 L1800.65 358.665 L1796.42 358.665 M1804.91 356.906 L1804.91 371.698 L1800.65 371.698 L1800.65 367.762 Q1799.2 370.123 1797.02 371.258 Q1794.84 372.369 1791.7 372.369 Q1787.72 372.369 1785.35 370.147 Q1783.02 367.901 1783.02 364.151 Q1783.02 359.776 1785.93 357.554 Q1788.87 355.332 1794.68 355.332 L1800.65 355.332 L1800.65 354.915 Q1800.65 351.975 1798.71 350.378 Q1796.79 348.758 1793.29 348.758 Q1791.07 348.758 1788.97 349.29 Q1786.86 349.823 1784.91 350.887 L1784.91 346.952 Q1787.25 346.05 1789.45 345.61 Q1791.65 345.147 1793.73 345.147 Q1799.36 345.147 1802.14 348.063 Q1804.91 350.98 1804.91 356.906 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1813.69 335.679 L1817.95 335.679 L1817.95 371.698 L1813.69 371.698 L1813.69 335.679 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1826.86 335.679 L1831.12 335.679 L1831.12 371.698 L1826.86 371.698 L1826.86 335.679 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip170)" cx="1641.28" cy="406.258" r="19.7486" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="5.85143"/>
<path clip-path="url(#clip170)" d="M1742.58 392.82 L1742.58 405.806 L1748.46 405.806 Q1751.72 405.806 1753.5 404.116 Q1755.28 402.427 1755.28 399.302 Q1755.28 396.2 1753.5 394.51 Q1751.72 392.82 1748.46 392.82 L1742.58 392.82 M1737.9 388.978 L1748.46 388.978 Q1754.27 388.978 1757.23 391.616 Q1760.22 394.232 1760.22 399.302 Q1760.22 404.417 1757.23 407.033 Q1754.27 409.649 1748.46 409.649 L1742.58 409.649 L1742.58 423.538 L1737.9 423.538 L1737.9 388.978 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1787.85 407.889 L1787.85 423.538 L1783.59 423.538 L1783.59 408.028 Q1783.59 404.348 1782.16 402.519 Q1780.72 400.69 1777.85 400.69 Q1774.41 400.69 1772.41 402.89 Q1770.42 405.089 1770.42 408.885 L1770.42 423.538 L1766.14 423.538 L1766.14 387.519 L1770.42 387.519 L1770.42 401.64 Q1771.95 399.302 1774.01 398.144 Q1776.09 396.987 1778.8 396.987 Q1783.27 396.987 1785.56 399.765 Q1787.85 402.519 1787.85 407.889 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1796.35 397.612 L1800.61 397.612 L1800.61 423.538 L1796.35 423.538 L1796.35 397.612 M1796.35 387.519 L1800.61 387.519 L1800.61 392.913 L1796.35 392.913 L1796.35 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1809.52 387.519 L1813.78 387.519 L1813.78 423.538 L1809.52 423.538 L1809.52 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1822.69 397.612 L1826.95 397.612 L1826.95 423.538 L1822.69 423.538 L1822.69 397.612 M1822.69 387.519 L1826.95 387.519 L1826.95 392.913 L1822.69 392.913 L1822.69 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1839.98 419.649 L1839.98 433.399 L1835.7 433.399 L1835.7 397.612 L1839.98 397.612 L1839.98 401.547 Q1841.33 399.232 1843.36 398.121 Q1845.42 396.987 1848.27 396.987 Q1852.99 396.987 1855.93 400.737 Q1858.9 404.487 1858.9 410.598 Q1858.9 416.709 1855.93 420.459 Q1852.99 424.209 1848.27 424.209 Q1845.42 424.209 1843.36 423.098 Q1841.33 421.963 1839.98 419.649 M1854.47 410.598 Q1854.47 405.899 1852.53 403.237 Q1850.61 400.552 1847.23 400.552 Q1843.85 400.552 1841.9 403.237 Q1839.98 405.899 1839.98 410.598 Q1839.98 415.297 1841.9 417.982 Q1843.85 420.644 1847.23 420.644 Q1850.61 420.644 1852.53 417.982 Q1854.47 415.297 1854.47 410.598 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip170)" cx="1641.28" cy="458.098" r="19.7486" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="5.85143"/>
<path clip-path="url(#clip170)" d="M1742.58 444.66 L1742.58 457.646 L1748.46 457.646 Q1751.72 457.646 1753.5 455.956 Q1755.28 454.267 1755.28 451.142 Q1755.28 448.04 1753.5 446.35 Q1751.72 444.66 1748.46 444.66 L1742.58 444.66 M1737.9 440.818 L1748.46 440.818 Q1754.27 440.818 1757.23 443.456 Q1760.22 446.072 1760.22 451.142 Q1760.22 456.257 1757.23 458.873 Q1754.27 461.489 1748.46 461.489 L1742.58 461.489 L1742.58 475.378 L1737.9 475.378 L1737.9 440.818 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1787.85 459.729 L1787.85 475.378 L1783.59 475.378 L1783.59 459.868 Q1783.59 456.188 1782.16 454.359 Q1780.72 452.53 1777.85 452.53 Q1774.41 452.53 1772.41 454.73 Q1770.42 456.929 1770.42 460.725 L1770.42 475.378 L1766.14 475.378 L1766.14 439.359 L1770.42 439.359 L1770.42 453.48 Q1771.95 451.142 1774.01 449.984 Q1776.09 448.827 1778.8 448.827 Q1783.27 448.827 1785.56 451.605 Q1787.85 454.359 1787.85 459.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1796.35 449.452 L1800.61 449.452 L1800.61 475.378 L1796.35 475.378 L1796.35 449.452 M1796.35 439.359 L1800.61 439.359 L1800.61 444.753 L1796.35 444.753 L1796.35 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1809.52 439.359 L1813.78 439.359 L1813.78 475.378 L1809.52 475.378 L1809.52 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1822.69 449.452 L1826.95 449.452 L1826.95 475.378 L1822.69 475.378 L1822.69 449.452 M1822.69 439.359 L1826.95 439.359 L1826.95 444.753 L1822.69 444.753 L1822.69 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1839.98 471.489 L1839.98 485.239 L1835.7 485.239 L1835.7 449.452 L1839.98 449.452 L1839.98 453.387 Q1841.33 451.072 1843.36 449.961 Q1845.42 448.827 1848.27 448.827 Q1852.99 448.827 1855.93 452.577 Q1858.9 456.327 1858.9 462.438 Q1858.9 468.549 1855.93 472.299 Q1852.99 476.049 1848.27 476.049 Q1845.42 476.049 1843.36 474.938 Q1841.33 473.803 1839.98 471.489 M1854.47 462.438 Q1854.47 457.739 1852.53 455.077 Q1850.61 452.392 1847.23 452.392 Q1843.85 452.392 1841.9 455.077 Q1839.98 457.739 1839.98 462.438 Q1839.98 467.137 1841.9 469.822 Q1843.85 472.484 1847.23 472.484 Q1850.61 472.484 1852.53 469.822 Q1854.47 467.137 1854.47 462.438 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1892.81 462.345 Q1887.65 462.345 1885.65 463.526 Q1883.66 464.706 1883.66 467.554 Q1883.66 469.822 1885.15 471.165 Q1886.65 472.484 1889.22 472.484 Q1892.76 472.484 1894.89 469.984 Q1897.04 467.461 1897.04 463.294 L1897.04 462.345 L1892.81 462.345 M1901.3 460.586 L1901.3 475.378 L1897.04 475.378 L1897.04 471.442 Q1895.58 473.803 1893.41 474.938 Q1891.23 476.049 1888.09 476.049 Q1884.1 476.049 1881.74 473.827 Q1879.4 471.581 1879.4 467.831 Q1879.4 463.456 1882.32 461.234 Q1885.26 459.012 1891.07 459.012 L1897.04 459.012 L1897.04 458.595 Q1897.04 455.655 1895.1 454.058 Q1893.18 452.438 1889.68 452.438 Q1887.46 452.438 1885.35 452.97 Q1883.25 453.503 1881.3 454.567 L1881.3 450.632 Q1883.64 449.73 1885.84 449.29 Q1888.04 448.827 1890.12 448.827 Q1895.75 448.827 1898.52 451.743 Q1901.3 454.66 1901.3 460.586 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1923.2 439.359 L1923.2 442.901 L1919.13 442.901 Q1916.83 442.901 1915.93 443.827 Q1915.05 444.753 1915.05 447.16 L1915.05 449.452 L1922.07 449.452 L1922.07 452.762 L1915.05 452.762 L1915.05 475.378 L1910.77 475.378 L1910.77 452.762 L1906.7 452.762 L1906.7 449.452 L1910.77 449.452 L1910.77 447.646 Q1910.77 443.318 1912.78 441.35 Q1914.8 439.359 1919.17 439.359 L1923.2 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1930.14 442.091 L1930.14 449.452 L1938.92 449.452 L1938.92 452.762 L1930.14 452.762 L1930.14 466.836 Q1930.14 470.007 1931 470.91 Q1931.88 471.813 1934.54 471.813 L1938.92 471.813 L1938.92 475.378 L1934.54 475.378 Q1929.61 475.378 1927.74 473.549 Q1925.86 471.697 1925.86 466.836 L1925.86 452.762 L1922.74 452.762 L1922.74 449.452 L1925.86 449.452 L1925.86 442.091 L1930.14 442.091 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1966.7 461.35 L1966.7 463.433 L1947.11 463.433 Q1947.39 467.831 1949.75 470.146 Q1952.14 472.438 1956.37 472.438 Q1958.83 472.438 1961.12 471.836 Q1963.43 471.234 1965.7 470.03 L1965.7 474.058 Q1963.41 475.03 1961 475.54 Q1958.59 476.049 1956.12 476.049 Q1949.91 476.049 1946.28 472.438 Q1942.67 468.827 1942.67 462.669 Q1942.67 456.304 1946.09 452.577 Q1949.54 448.827 1955.38 448.827 Q1960.61 448.827 1963.64 452.206 Q1966.7 455.563 1966.7 461.35 M1962.44 460.1 Q1962.39 456.605 1960.47 454.521 Q1958.57 452.438 1955.42 452.438 Q1951.86 452.438 1949.71 454.452 Q1947.58 456.466 1947.25 460.123 L1962.44 460.1 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M1988.71 453.433 Q1987.99 453.017 1987.14 452.831 Q1986.3 452.623 1985.28 452.623 Q1981.67 452.623 1979.73 454.984 Q1977.81 457.322 1977.81 461.72 L1977.81 475.378 L1973.52 475.378 L1973.52 449.452 L1977.81 449.452 L1977.81 453.48 Q1979.15 451.118 1981.3 449.984 Q1983.45 448.827 1986.53 448.827 Q1986.97 448.827 1987.51 448.896 Q1988.04 448.943 1988.69 449.058 L1988.71 453.433 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2008.25 449.452 L2012.51 449.452 L2012.51 475.378 L2008.25 475.378 L2008.25 449.452 M2008.25 439.359 L2012.51 439.359 L2012.51 444.753 L2008.25 444.753 L2008.25 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2042.97 459.729 L2042.97 475.378 L2038.71 475.378 L2038.71 459.868 Q2038.71 456.188 2037.27 454.359 Q2035.84 452.53 2032.97 452.53 Q2029.52 452.53 2027.53 454.73 Q2025.54 456.929 2025.54 460.725 L2025.54 475.378 L2021.26 475.378 L2021.26 449.452 L2025.54 449.452 L2025.54 453.48 Q2027.07 451.142 2029.13 449.984 Q2031.21 448.827 2033.92 448.827 Q2038.39 448.827 2040.68 451.605 Q2042.97 454.359 2042.97 459.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2055.68 442.091 L2055.68 449.452 L2064.45 449.452 L2064.45 452.762 L2055.68 452.762 L2055.68 466.836 Q2055.68 470.007 2056.53 470.91 Q2057.41 471.813 2060.07 471.813 L2064.45 471.813 L2064.45 475.378 L2060.07 475.378 Q2055.14 475.378 2053.27 473.549 Q2051.39 471.697 2051.39 466.836 L2051.39 452.762 L2048.27 452.762 L2048.27 449.452 L2051.39 449.452 L2051.39 442.091 L2055.68 442.091 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2092.23 461.35 L2092.23 463.433 L2072.64 463.433 Q2072.92 467.831 2075.28 470.146 Q2077.67 472.438 2081.9 472.438 Q2084.36 472.438 2086.65 471.836 Q2088.96 471.234 2091.23 470.03 L2091.23 474.058 Q2088.94 475.03 2086.53 475.54 Q2084.13 476.049 2081.65 476.049 Q2075.45 476.049 2071.81 472.438 Q2068.2 468.827 2068.2 462.669 Q2068.2 456.304 2071.63 452.577 Q2075.07 448.827 2080.91 448.827 Q2086.14 448.827 2089.17 452.206 Q2092.23 455.563 2092.23 461.35 M2087.97 460.1 Q2087.92 456.605 2086 454.521 Q2084.1 452.438 2080.95 452.438 Q2077.39 452.438 2075.24 454.452 Q2073.11 456.466 2072.78 460.123 L2087.97 460.1 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2114.24 453.433 Q2113.52 453.017 2112.67 452.831 Q2111.83 452.623 2110.82 452.623 Q2107.2 452.623 2105.26 454.984 Q2103.34 457.322 2103.34 461.72 L2103.34 475.378 L2099.06 475.378 L2099.06 449.452 L2103.34 449.452 L2103.34 453.48 Q2104.68 451.118 2106.83 449.984 Q2108.99 448.827 2112.07 448.827 Q2112.51 448.827 2113.04 448.896 Q2113.57 448.943 2114.22 449.058 L2114.24 453.433 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2130.49 462.345 Q2125.33 462.345 2123.34 463.526 Q2121.35 464.706 2121.35 467.554 Q2121.35 469.822 2122.83 471.165 Q2124.33 472.484 2126.9 472.484 Q2130.44 472.484 2132.57 469.984 Q2134.73 467.461 2134.73 463.294 L2134.73 462.345 L2130.49 462.345 M2138.99 460.586 L2138.99 475.378 L2134.73 475.378 L2134.73 471.442 Q2133.27 473.803 2131.09 474.938 Q2128.92 476.049 2125.77 476.049 Q2121.79 476.049 2119.43 473.827 Q2117.09 471.581 2117.09 467.831 Q2117.09 463.456 2120.01 461.234 Q2122.94 459.012 2128.76 459.012 L2134.73 459.012 L2134.73 458.595 Q2134.73 455.655 2132.78 454.058 Q2130.86 452.438 2127.37 452.438 Q2125.14 452.438 2123.04 452.97 Q2120.93 453.503 2118.99 454.567 L2118.99 450.632 Q2121.32 449.73 2123.52 449.29 Q2125.72 448.827 2127.81 448.827 Q2133.43 448.827 2136.21 451.743 Q2138.99 454.66 2138.99 460.586 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2166.42 450.447 L2166.42 454.429 Q2164.61 453.433 2162.78 452.947 Q2160.98 452.438 2159.13 452.438 Q2154.98 452.438 2152.69 455.077 Q2150.4 457.692 2150.4 462.438 Q2150.4 467.183 2152.69 469.822 Q2154.98 472.438 2159.13 472.438 Q2160.98 472.438 2162.78 471.952 Q2164.61 471.442 2166.42 470.447 L2166.42 474.382 Q2164.63 475.216 2162.71 475.632 Q2160.82 476.049 2158.66 476.049 Q2152.81 476.049 2149.36 472.368 Q2145.91 468.688 2145.91 462.438 Q2145.91 456.095 2149.38 452.461 Q2152.88 448.827 2158.94 448.827 Q2160.91 448.827 2162.78 449.243 Q2164.66 449.637 2166.42 450.447 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2178.04 442.091 L2178.04 449.452 L2186.81 449.452 L2186.81 452.762 L2178.04 452.762 L2178.04 466.836 Q2178.04 470.007 2178.89 470.91 Q2179.77 471.813 2182.44 471.813 L2186.81 471.813 L2186.81 475.378 L2182.44 475.378 Q2177.5 475.378 2175.63 473.549 Q2173.75 471.697 2173.75 466.836 L2173.75 452.762 L2170.63 452.762 L2170.63 449.452 L2173.75 449.452 L2173.75 442.091 L2178.04 442.091 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2192.41 449.452 L2196.67 449.452 L2196.67 475.378 L2192.41 475.378 L2192.41 449.452 M2192.41 439.359 L2196.67 439.359 L2196.67 444.753 L2192.41 444.753 L2192.41 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2215.63 452.438 Q2212.2 452.438 2210.21 455.123 Q2208.22 457.785 2208.22 462.438 Q2208.22 467.091 2210.19 469.776 Q2212.18 472.438 2215.63 472.438 Q2219.03 472.438 2221.02 469.753 Q2223.01 467.067 2223.01 462.438 Q2223.01 457.831 2221.02 455.146 Q2219.03 452.438 2215.63 452.438 M2215.63 448.827 Q2221.19 448.827 2224.36 452.438 Q2227.53 456.049 2227.53 462.438 Q2227.53 468.804 2224.36 472.438 Q2221.19 476.049 2215.63 476.049 Q2210.05 476.049 2206.88 472.438 Q2203.73 468.804 2203.73 462.438 Q2203.73 456.049 2206.88 452.438 Q2210.05 448.827 2215.63 448.827 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip170)" d="M2256.14 459.729 L2256.14 475.378 L2251.88 475.378 L2251.88 459.868 Q2251.88 456.188 2250.44 454.359 Q2249.01 452.53 2246.14 452.53 Q2242.69 452.53 2240.7 454.73 Q2238.71 456.929 2238.71 460.725 L2238.71 475.378 L2234.43 475.378 L2234.43 449.452 L2238.71 449.452 L2238.71 453.48 Q2240.24 451.142 2242.3 449.984 Q2244.38 448.827 2247.09 448.827 Q2251.56 448.827 2253.85 451.605 Q2256.14 454.359 2256.14 459.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /></svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA ppersist_js_state·has_pluto_hook_features§cell_id$fb70cc0c-1c7f-11eb-31b5-87b168a66e19depends_on_disabled_cells§runtime Lpublished_object_keysdepends_on_skipped_cells§errored$ec7638e0-19c3-11eb-1ca1-0b3aa3b40240queued¤logsrunning¦outputbody,not_defined (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA q;persist_js_state·has_pluto_hook_features§cell_id$ec7638e0-19c3-11eb-1ca1-0b3aa3b40240depends_on_disabled_cells§runtime ]published_object_keysdepends_on_skipped_cells§errored$885ac814-1953-11eb-30d9-85dcd198a1d8queued¤logsrunning¦outputbody.intersection (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA p|gpersist_js_state·has_pluto_hook_features§cell_id$885ac814-1953-11eb-30d9-85dcd198a1d8depends_on_disabled_cells§runtime &:Opublished_object_keysdepends_on_skipped_cells§errored$3dd0a48c-1ca3-11eb-1127-e7c43b5d1666queued¤logsrunning¦outputbody6<div class="markdown"><p>👉 Recreate the spherical aberration figure from <a href="https://www.youtube.com/watch?v&#61;MkkZb5V6HqM">the lecture</a> &#40;around the end of the video&#41;, and make the index of refraction interactive using a <code>Slider</code>. <em>Or make something else&#33;</em></p>
</div>mimetext/htmlrootassigneelast_run_timestampA gH_persist_js_state·has_pluto_hook_features§cell_id$3dd0a48c-1ca3-11eb-1127-e7c43b5d1666depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$63ef21c6-1c7a-11eb-2f3c-c5ac16bc289fqueued¤logsrunning¦outputbodyprefixIntersection{Wall}elementsobjectprefixWallelementspositionprefixFloat64elements8.0text/plain-1.0text/plaintypeArrayprefix_shortobjectidcb5693189533ec6e!application/vnd.pluto.tree+objectnormalprefixFloat64elements-0.948683text/plain0.316228text/plaintypeArrayprefix_shortobjectid1ec3964025f3aa0!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidcfcbe35619eca23c!application/vnd.pluto.tree+objectdistance7.155417527999327text/plainpointprefixFloat64elements6.2text/plain-6.4text/plaintypeArrayprefix_shortobjectid34cbf1fff174f98!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectid173dde74287e2c2cmime!application/vnd.pluto.tree+objectrootassigneelast_run_timestampA pMܱpersist_js_state·has_pluto_hook_features§cell_id$63ef21c6-1c7a-11eb-2f3c-c5ac16bc289fdepends_on_disabled_cells§runtime ]published_object_keysdepends_on_skipped_cells§errored$c3e52bf2-ca9a-11ea-13aa-03a4335f2906queued¤logslinemsg(^[32m[1m  Activating[22m[39m new project at `/tmp/jl_zJofvq`
[32m[1m    Updating[22m[39m registry at `~/.julia/registries/General.toml`
[32m[1m   Resolving[22m[39m package versions...
[32m[1m    Updating[22m[39m `/tmp/jl_zJofvq/Project.toml`
 [90m [91a5bcdd] [39m[92m+ Plots v1.40.14[39m
 [90m [7f904dfe] [39m[92m+ PlutoUI v0.6.11[39m
[32m[1m    Updating[22m[39m `/tmp/jl_zJofvq/Manifest.toml`
 [90m [66dad0bd] [39m[92m+ AliasTables v1.1.3[39m
 [90m [d1d4a3ce] [39m[92m+ BitFlags v0.1.9[39m
 [90m [d360d2e6] [39m[92m+ ChainRulesCore v1.25.1[39m
 [90m [9e997f8a] [39m[92m+ ChangesOfVariables v0.1.10[39m
 [90m [944b1d66] [39m[92m+ CodecZlib v0.7.8[39m
 [90m [35d6a980] [39m[92m+ ColorSchemes v3.29.0[39m
 [90m [3da002f7] [39m[92m+ ColorTypes v0.12.1[39m
 [90m [c3611d14] [39m[92m+ ColorVectorSpace v0.11.0[39m
 [90m [5ae59095] [39m[92m+ Colors v0.13.1[39m
 [90m [34da2185] [39m[92m+ Compat v4.16.0[39m
 [90m [f0e56b4a] [39m[92m+ ConcurrentUtilities v2.5.0[39m
 [90m [187b0558] [39m[92m+ ConstructionBase v1.5.8[39m
 [90m [d38c429a] [39m[92m+ Contour v0.6.3[39m
 [90m [9a962f9c] [39m[92m+ DataAPI v1.16.0[39m
 [90m [864edb3b] [39m[92m+ DataStructures v0.18.22[39m
 [90m [ffbed154] [39m[92m+ DocStringExtensions v0.9.5[39m
 [90m [460bff9d] [39m[92m+ ExceptionUnwrapping v0.1.11[39m
 [90m [c87230d0] [39m[92m+ FFMPEG v0.4.2[39m
 [90m [53c48c17] [39m[92m+ FixedPointNumbers v0.8.5[39m
 [90m [1fa38f19] [39m[92m+ Format v1.3.7[39m
 [90m [28b8d3ca] [39m[92m+ GR v0.73.6[39m
 [90m [42e2da0e] [39m[92m+ Grisu v1.0.2[39m
 [90m [cd3eb016] [39m[92m+ HTTP v1.10.16[39m
 [90m [3587e190] [39m[92m+ InverseFunctions v0.1.17[39m
 [90m [92d709cd] [39m[92m+ IrrationalConstants v0.2.4[39m
 [90m [1019f520] [39m[92m+ JLFzf v0.1.11[39m
 [90m [692b3bcd] [39m[92m+ JLLWrappers v1.7.0[39m
 [90m [682c06a0] [39m[92m+ JSON v0.21.4[39m
 [90m [b964fa9f] [39m[92m+ LaTeXStrings v1.4.0[39m
 [90m [23fbe1c1] [39m[92m+ Latexify v0.16.8[39m
 [90m [2ab3a3ac] [39m[92m+ LogExpFunctions v0.3.28[39m
 [90m [e6f89c97] [39m[92m+ LoggingExtras v1.1.0[39m
 [90m [1914dd2f] [39m[92m+ MacroTools v0.5.16[39m
 [90m [739be429] [39m[92m+ MbedTLS v1.1.9[39m
 [90m [442fdcdd] [39m[92m+ Measures v0.3.2[39m
 [90m [e1d29d7a] [39m[92m+ Missings v1.2.0[39m
 [90m [77ba4419] [39m[92m+ NaNMath v1.0.3[39m
 [90m [4d8831e6] [39m[92m+ OpenSSL v1.5.0[39m
 [90m [bac558e1] [39m[92m+ OrderedCollections v1.8.1[39m
 [90m [69de0a69] [39m[92m+ Parsers v2.8.3[39m
 [90m [ccf2f8ad] [39m[92m+ PlotThemes v3.3.0[39m
 [90m [995b91a9] [39m[92m+ PlotUtils v1.4.3[39m
 [90m [91a5bcdd] [39m[92m+ Plots v1.40.14[39m
 [90m [7f904dfe] [39m[92m+ PlutoUI v0.6.11[39m
 [90m [aea7be01] [39m[92m+ PrecompileTools v1.2.1[39m
 [90m [21216c6a] [39m[92m+ Preferences v1.4.3[39m
 [90m [43287f4e] [39m[92m+ PtrArrays v1.3.0[39m
 [90m [3cdcf5f2] [39m[92m+ RecipesBase v1.3.4[39m
 [90m [01d81517] [39m[92m+ RecipesPipeline v0.6.12[39m
 [90m [189a3867] [39m[92m+ Reexport v1.2.2[39m
 [90m [05181044] [39m[92m+ RelocatableFolders v1.0.1[39m
 [90m [ae029012] [39m[92m+ Requires v1.3.1[39m
 [90m [6c6a2e73] [39m[92m+ Scratch v1.2.1[39m
 [90m [992d4aef] [39m[92m+ Showoff v1.0.3[39m
 [90m [777ac1f9] [39m[92m+ SimpleBufferStream v1.2.0[39m
 [90m [a2af1166] [39m[92m+ SortingAlgorithms v1.2.1[39m
 [90m [860ef19b] [39m[92m+ StableRNGs v1.0.3[39m
 [90m [82ae8749] [39m[92m+ StatsAPI v1.7.1[39m
 [90m [2913bbd2] [39m[92m+ StatsBase v0.34.4[39m
 [90m [fd094767] [39m[92m+ Suppressor v0.2.8[39m
 [90m [62fd8b95] [39m[92m+ TensorCore v0.1.1[39m
 [90m [3bb67fe8] [39m[92m+ TranscodingStreams v0.11.3[39m
 [90m [5c2747f8] [39m[92m+ URIs v1.5.2[39m
 [90m [1cfade01] [39m[92m+ UnicodeFun v0.4.1[39m
 [90m [1986cc42] [39m[92m+ Unitful v1.23.1[39m
 [90m [45397f5d] [39m[92m+ UnitfulLatexify v1.7.0[39m
 [90m [41fe7b60] [39m[92m+ Unzip v0.2.0[39m
 [90m [6e34b625] [39m[92m+ Bzip2_jll v1.0.9+0[39m
 [90m [83423d85] [39m[92m+ Cairo_jll v1.18.5+0[39m
 [90m [ee1fde0b] [39m[92m+ Dbus_jll v1.16.2+0[39m
 [90m [2702e6a9] [39m[92m+ EpollShim_jll v0.0.20230411+1[39m
 [90m [2e619515] [39m[92m+ Expat_jll v2.6.5+0[39m
 [90m [b22a6f82] [39m[92m+ FFMPEG_jll v4.4.4+1[39m
 [90m [a3f928ae] [39m[92m+ Fontconfig_jll v2.16.0+0[39m
 [90m [d7e528f0] [39m[92m+ FreeType2_jll v2.13.4+0[39m
 [90m [559328eb] [39m[92m+ FriBidi_jll v1.0.17+0[39m
 [90m [0656b61e] [39m[92m+ GLFW_jll v3.4.0+2[39m
 [90m [d2c73de3] [39m[92m+ GR_jll v0.73.6+0[39m
 [90m [78b55507] [39m[92m+ Gettext_jll v0.21.0+0[39m
 [90m [7746bdde] [39m[92m+ Glib_jll v2.84.0+0[39m
 [90m [3b182d85] [39m[92m+ Graphite2_jll v1.3.15+0[39m
 [90m [2e76f6c2] [39m[92m+ HarfBuzz_jll v8.5.1+0[39m
 [90m [aacddb02] [39m[92m+ JpegTurbo_jll v3.1.1+0[39m
 [90m [c1c5ebd0] [39m[92m+ LAME_jll v3.100.2+0[39m
 [90m [88015f11] [39m[92m+ LERC_jll v3.0.0+1[39m
 [90m [1d63c593] [39m[92m+ LLVMOpenMP_jll v18.1.8+0[39m
 [90m [dd4b983a] [39m[92m+ LZO_jll v2.10.3+0[39m
 [90m [e9f186c6] [39m[92m+ Libffi_jll v3.4.7+0[39m
 [90m [7e76a0d4] [39m[92m+ Libglvnd_jll v1.7.1+1[39m
 [90m [94ce4f54] [39m[92m+ Libiconv_jll v1.18.0+0[39m
 [90m [4b2f31a3] [39m[92m+ Libmount_jll v2.41.0+0[39m
 [90m [89763e89] [39m[92m+ Libtiff_jll v4.5.1+1[39m
 [90m [38a345b3] [39m[92m+ Libuuid_jll v2.41.0+0[39m
 [90m [e7412a2a] [39m[92m+ Ogg_jll v1.3.5+1[39m
 [90m [458c3c95] [39m[92m+ OpenSSL_jll v3.5.0+0[39m
 [90m [91d4177d] [39m[92m+ Opus_jll v1.3.3+0[39m
 [90m [36c8627f] [39m[92m+ Pango_jll v1.56.3+0[39m
 [90m [30392449] [39m[92m+ Pixman_jll v0.44.2+0[39m
 [90m [c0090381] [39m[92m+ Qt6Base_jll v6.7.1+1[39m
 [90m [a44049a8] [39m[92m+ Vulkan_Loader_jll v1.3.243+0[39m
 [90m [a2964d1f] [39m[92m+ Wayland_jll v1.23.1+0[39m
 [90m [2381bf8a] [39m[92m+ Wayland_protocols_jll v1.44.0+0[39m
 [90m [02c8fc9c] [39m[92m+ XML2_jll v2.13.6+1[39m
 [90m [ffd25f8a] [39m[92m+ XZ_jll v5.8.1+0[39m
 [90m [f67eecfb] [39m[92m+ Xorg_libICE_jll v1.1.2+0[39m
 [90m [c834827a] [39m[92m+ Xorg_libSM_jll v1.2.6+0[39m
 [90m [4f6342f7] [39m[92m+ Xorg_libX11_jll v1.8.12+0[39m
 [90m [0c0b7dd1] [39m[92m+ Xorg_libXau_jll v1.0.13+0[39m
 [90m [935fb764] [39m[92m+ Xorg_libXcursor_jll v1.2.4+0[39m
 [90m [a3789734] [39m[92m+ Xorg_libXdmcp_jll v1.1.6+0[39m
 [90m [1082639a] [39m[92m+ Xorg_libXext_jll v1.3.7+0[39m
 [90m [d091e8ba] [39m[92m+ Xorg_libXfixes_jll v6.0.1+0[39m
 [90m [a51aa0fd] [39m[92m+ Xorg_libXi_jll v1.8.3+0[39m
 [90m [d1454406] [39m[92m+ Xorg_libXinerama_jll v1.1.6+0[39m
 [90m [ec84b674] [39m[92m+ Xorg_libXrandr_jll v1.5.5+0[39m
 [90m [ea2f1a96] [39m[92m+ Xorg_libXrender_jll v0.9.12+0[39m
 [90m [c7cfdc94] [39m[92m+ Xorg_libxcb_jll v1.17.1+0[39m
 [90m [cc61e674] [39m[92m+ Xorg_libxkbfile_jll v1.1.3+0[39m
 [90m [e920d4aa] [39m[92m+ Xorg_xcb_util_cursor_jll v0.1.4+0[39m
 [90m [12413925] [39m[92m+ Xorg_xcb_util_image_jll v0.4.1+0[39m
 [90m [2def613f] [39m[92m+ Xorg_xcb_util_jll v0.4.1+0[39m
 [90m [975044d2] [39m[92m+ Xorg_xcb_util_keysyms_jll v0.4.1+0[39m
 [90m [0d47668e] [39m[92m+ Xorg_xcb_util_renderutil_jll v0.3.10+0[39m
 [90m [c22f9ab0] [39m[92m+ Xorg_xcb_util_wm_jll v0.4.2+0[39m
 [90m [35661453] [39m[92m+ Xorg_xkbcomp_jll v1.4.7+0[39m
 [90m [33bec58e] [39m[92m+ Xorg_xkeyboard_config_jll v2.44.0+0[39m
 [90m [c5fb5394] [39m[92m+ Xorg_xtrans_jll v1.6.0+0[39m
 [90m [3161d3a3] [39m[92m+ Zstd_jll v1.5.7+1[39m
 [90m [35ca27e7] [39m[92m+ eudev_jll v3.2.14+0[39m
 [90m [214eeab7] [39m[92m+ fzf_jll v0.61.1+0[39m
 [90m [a4ae2306] [39m[92m+ libaom_jll v3.11.0+0[39m
 [90m [0ac62f75] [39m[92m+ libass_jll v0.15.2+0[39m
 [90m [1183f4f0] [39m[92m+ libdecor_jll v0.2.2+0[39m
 [90m [2db6ffa8] [39m[92m+ libevdev_jll v1.13.4+0[39m
 [90m [f638f0a6] [39m[92m+ libfdk_aac_jll v2.0.3+0[39m
 [90m [36db933b] [39m[92m+ libinput_jll v1.28.1+0[39m
 [90m [b53b4c65] [39m[92m+ libpng_jll v1.6.49+0[39m
 [90m [f27f6e37] [39m[92m+ libvorbis_jll v1.3.7+2[39m
 [90m [009596ad] [39m[92m+ mtdev_jll v1.1.7+0[39m
 [90m [1270edf5] [39m[92m+ x264_jll v2021.5.5+0[39m
 [90m [dfaa095f] [39m[92m+ x265_jll v3.5.0+0[39m
 [90m [d8fb68d0] [39m[92m+ xkbcommon_jll v1.8.1+0[39m
 [90m [0dad84c5] [39m[92m+ ArgTools[39m
 [90m [56f22d72] [39m[92m+ Artifacts[39m
 [90m [2a0f44e3] [39m[92m+ Base64[39m
 [90m [ade2ca70] [39m[92m+ Dates[39m
 [90m [8bb1440f] [39m[92m+ DelimitedFiles[39m
 [90m [f43a241f] [39m[92m+ Downloads[39m
 [90m [7b1f6079] [39m[92m+ FileWatching[39m
 [90m [b77e0a4c] [39m[92m+ InteractiveUtils[39m
 [90m [b27032c2] [39m[92m+ LibCURL[39m
 [90m [76f85450] [39m[92m+ LibGit2[39m
 [90m [8f399da3] [39m[92m+ Libdl[39m
 [90m [37e2e46d] [39m[92m+ LinearAlgebra[39m
 [90m [56ddb016] [39m[92m+ Logging[39m
 [90m [d6f4376e] [39m[92m+ Markdown[39m
 [90m [a63ad114] [39m[92m+ Mmap[39m
 [90m [ca575930] [39m[92m+ NetworkOptions[39m
 [90m [44cfe95a] [39m[92m+ Pkg[39m
 [90m [de0858da] [39m[92m+ Printf[39m
 [90m [3fa0cd96] [39m[92m+ REPL[39m
 [90m [9a3f8284] [39m[92m+ Random[39m
 [90m [ea8e919c] [39m[92m+ SHA[39m
 [90m [9e88b42a] [39m[92m+ Serialization[39m
 [90m [6462fe0b] [39m[92m+ Sockets[39m
 [90m [2f01184e] [39m[92m+ SparseArrays[39m
 [90m [10745b16] [39m[92m+ Statistics[39m
 [90m [fa267f1f] [39m[92m+ TOML[39m
 [90m [a4e569a6] [39m[92m+ Tar[39m
 [90m [8dfed614] [39m[92m+ Test[39m
 [90m [cf7118a7] [39m[92m+ UUIDs[39m
 [90m [4ec0a83e] [39m[92m+ Unicode[39m
 [90m [e66e0078] [39m[92m+ CompilerSupportLibraries_jll[39m
 [90m [deac9b47] [39m[92m+ LibCURL_jll[39m
 [90m [29816b5a] [39m[92m+ LibSSH2_jll[39m
 [90m [c8ffd9c3] [39m[92m+ MbedTLS_jll[39m
 [90m [14a3606d] [39m[92m+ MozillaCACerts_jll[39m
 [90m [4536629a] [39m[92m+ OpenBLAS_jll[39m
 [90m [05823500] [39m[92m+ OpenLibm_jll[39m
 [90m [efcefdf7] [39m[92m+ PCRE2_jll[39m
 [90m [83775a58] [39m[92m+ Zlib_jll[39m
 [90m [8e850b90] [39m[92m+ libblastrampoline_jll[39m
 [90m [8e850ede] [39m[92m+ nghttp2_jll[39m
 [90m [3f19e933] [39m[92m+ p7zip_jll[39m
text/plaincell_id$c3e52bf2-ca9a-11ea-13aa-03a4335f2906kwargsidPlutoRunner_d1acb81efileP/home/runner/.julia/packages/Pluto/6smog/src/runner/PlutoRunner/src/io/stdout.jlgroupstdoutlevelLogLevel(-555)running¦outputbodymimetext/plainrootassigneelast_run_timestampA j,persist_js_state·has_pluto_hook_features§cell_id$c3e52bf2-ca9a-11ea-13aa-03a4335f2906depends_on_disabled_cells§runtime   m"published_object_keysdepends_on_skipped_cells§errored$a5847264-1ca0-11eb-0b45-eb5388f6e688queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA gD?Kpersist_js_state·has_pluto_hook_features§cell_id$a5847264-1ca0-11eb-0b45-eb5388f6e688depends_on_disabled_cells§runtime9׵published_object_keysdepends_on_skipped_cells§errored$5342430e-1c79-11eb-261c-15abd0f8cfc1queued¤logsrunning¦outputbody]<div class="markdown"><p>So which of these <strong>five</strong> results should we use to determine what the photon does next? It should be the <em>closest intersection</em>.</p>
<p>Because we used two different types for hits and misses, we can express this in a charming way. We define what it means for one to be better than the other:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gD߰persist_js_state·has_pluto_hook_features§cell_id$5342430e-1c79-11eb-261c-15abd0f8cfc1depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$392fe192-1ca1-11eb-36c4-f9bd2b01a5e5queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA gGpersist_js_state·has_pluto_hook_features§cell_id$392fe192-1ca1-11eb-36c4-f9bd2b01a5e5depends_on_disabled_cells§runtime7published_object_keysdepends_on_skipped_cells§errored$1df32310-19c4-11eb-0824-6766cd21aaf4queued¤logsrunning¦outputbodyB<div class="markdown"><p><em>homework 7, version 1</em></p>
</div>mimetext/htmlrootassigneelast_run_timestampA gA9persist_js_state·has_pluto_hook_features§cell_id$1df32310-19c4-11eb-0824-6766cd21aaf4depends_on_disabled_cells§runtime NEpublished_object_keysdepends_on_skipped_cells§errored$e70b9e24-1a07-11eb-13db-b95c07880893queued¤logsrunning¦outputbody)interact (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA l>Wpersist_js_state·has_pluto_hook_features§cell_id$e70b9e24-1a07-11eb-13db-b95c07880893depends_on_disabled_cells§runtime  published_object_keysdepends_on_skipped_cells§errored$c25caf08-1a13-11eb-3c4d-0567faf4e662queued¤logsrunning¦outputbody<div class="markdown"><div class="admonition hint"><p class="admonition-title">Hint</p><p>You can use <code>ray.ior &#61;&#61; 1.0</code> to check whether this is a ray <em>entering</em> or <em>leaving</em> the sphere.</p>

</div>
</div>mimetext/htmlrootassigneelast_run_timestampA qJYpersist_js_state·has_pluto_hook_features§cell_id$c25caf08-1a13-11eb-3c4d-0567faf4e662depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5queued¤logsrunning¦outputbodyprefixIntersection{Wall}elementsobjectprefixWallelementspositionprefixFloat64elements8.0text/plain-1.0text/plaintypeArrayprefix_shortobjectidcb5693189533ec6e!application/vnd.pluto.tree+objectnormalprefixFloat64elements-0.948683text/plain0.316228text/plaintypeArrayprefix_shortobjectid1ec3964025f3aa0!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidcfcbe35619eca23c!application/vnd.pluto.tree+objectdistance7.155417527999327text/plainpointprefixFloat64elements6.2text/plain-6.4text/plaintypeArrayprefix_shortobjectid64360f87adf4dd5a!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectid867aab81559ca216mime!application/vnd.pluto.tree+objectrootassigneetest_closestlast_run_timestampA pc8persist_js_state·has_pluto_hook_features§cell_id$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5depends_on_disabled_cells§runtimempublished_object_keysdepends_on_skipped_cells§errored$ba0a869a-1ad1-11eb-091f-916e9151f052queued¤logsrunning¦outputbody<div class="markdown"><p><br><br><br><br></p>
<h2><strong>Exercise 3:</strong> <em>Spheres</em></h2>
<p>Now that we know how to bounce light around mirrors, we want to simulate a <em>spherical lens</em> to make things more interesting. Let&#39;s define a <code>Sphere</code>. </p>
</div>mimetext/htmlrootassigneelast_run_timestampA gGpersist_js_state·has_pluto_hook_features§cell_id$ba0a869a-1ad1-11eb-091f-916e9151f052depends_on_disabled_cells§runtime Hnpublished_object_keysdepends_on_skipped_cells§errored$925e98d4-1c78-11eb-230d-994518f0060equeued¤logsrunning¦outputbodyprefixPhotonelementspprefixFloat64elements-1.0text/plain2.0text/plaintypeArrayprefix_shortobjectid8a190729699b2183!application/vnd.pluto.tree+objectlprefixFloat64elements0.780869text/plain-0.624695text/plaintypeArrayprefix_shortobjectid2dece3f1b142de19!application/vnd.pluto.tree+objectior1.0text/plaintypestructprefix_shortPhotonobjectid8c555cc85d23127emime!application/vnd.pluto.tree+objectrootassigneetest_photonlast_run_timestampA lpersist_js_state·has_pluto_hook_features§cell_id$925e98d4-1c78-11eb-230d-994518f0060edepends_on_disabled_cells§runtime	published_object_keysdepends_on_skipped_cells§errored$43306bd4-194d-11eb-2e30-07eabb8b29efqueued¤logsrunning¦outputbody(reflect (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA l}xpersist_js_state·has_pluto_hook_features§cell_id$43306bd4-194d-11eb-2e30-07eabb8b29efdepends_on_disabled_cells§runtime Epublished_object_keysdepends_on_skipped_cells§errored$6544be90-19d3-11eb-153c-218025f738c6queued¤logsrunning¦outputbodyprefixPhotonelementspprefixFloat64elements0.0text/plain1.0text/plaintypeArrayprefix_shortobjectida1fd58b9cb294805!application/vnd.pluto.tree+objectlprefixFloat64elements0.588501text/plain-0.808496text/plaintypeArrayprefix_shortobjectid41de5e2e8aeb4de4!application/vnd.pluto.tree+objectior1.0text/plaintypestructprefix_shortPhotonobjectide443702b3c86051amime!application/vnd.pluto.tree+objectrootassigneedizzylast_run_timestampA l}persist_js_state·has_pluto_hook_features§cell_id$6544be90-19d3-11eb-153c-218025f738c6depends_on_disabled_cells§runtimew{published_object_keysdepends_on_skipped_cells§errored$522e6b22-194d-11eb-167c-052e65f6b703queued¤logsrunning¦outputbodyy<div class="markdown"><p>Now we&#39;re going to make a bold claim: All walls in this simulation are mirrors. This is just for simplicity so we don&#39;t need to worry about rays stopping at the boundaries.</p>
<p>We are already able to find the intersection of a light ray with a mirror, but we still need to tell our friendly computer what a <em>reflection</em> is.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gEspersist_js_state·has_pluto_hook_features§cell_id$522e6b22-194d-11eb-167c-052e65f6b703depends_on_disabled_cells§runtime ypublished_object_keysdepends_on_skipped_cells§errored$251f0262-1a0c-11eb-39a3-09be67091dc8queued¤logsrunning¦outputbodyprefixIntersection{Sphere}elementsobjectprefixSphereelementscenterprefixFloat64elements7.0text/plain-6.0text/plaintypeArrayprefix_shortobjectidec1c81aae044f28a!application/vnd.pluto.tree+objectradius2text/plainior1.5text/plaintypestructprefix_shortSphereobjectidb59ae7be605c2d7c!application/vnd.pluto.tree+objectdistance5.366563145999495text/plainpointprefixFloat64elements5.4text/plain-4.8text/plaintypeArrayprefix_shortobjectidf37980ca6c466d41!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectide4a11bc577068047mime!application/vnd.pluto.tree+objectrootassigneesphere_intersectionlast_run_timestampA puTpersist_js_state·has_pluto_hook_features§cell_id$251f0262-1a0c-11eb-39a3-09be67091dc8depends_on_disabled_cells§runtime xpublished_object_keysdepends_on_skipped_cells§errored$8acef4b0-1a09-11eb-068d-79a259244ed1queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA lgpersist_js_state·has_pluto_hook_features§cell_id$8acef4b0-1a09-11eb-068d-79a259244ed1depends_on_disabled_cells§runtime Gpublished_object_keysdepends_on_skipped_cells§errored$8018fbf0-1a05-11eb-3032-95aae07ca78fqueued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA lCpersist_js_state·has_pluto_hook_features§cell_id$8018fbf0-1a05-11eb-3032-95aae07ca78fdepends_on_disabled_cells§runtime #published_object_keysdepends_on_skipped_cells§errored$2158a356-1a05-11eb-3f5b-4dfa810fc602queued¤logsrunning¦outputbodyprefixMain.workspace#3.WallelementsprefixWallelementspositionprefixFloat64elements10.0text/plain0.0text/plaintypeArrayprefix_shortobjectidfffdf189f71f6f9c!application/vnd.pluto.tree+objectnormalprefixFloat64elements-1.0text/plain0.0text/plaintypeArrayprefix_shortobjectid39926e9eea486b0d!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidc629b1cc33955b09!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements-10.0text/plain0.0text/plaintypeArrayprefix_shortobjectid60daa3e938d8db59!application/vnd.pluto.tree+objectnormalprefixFloat64elements1.0text/plain0.0text/plaintypeArrayprefix_shortobjectid81633505f9e9ed06!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectid5ce0d0254772ca24!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements0.0text/plain-10.0text/plaintypeArrayprefix_shortobjectidda9ea7f12775ea2!application/vnd.pluto.tree+objectnormalprefixFloat64elements0.0text/plain1.0text/plaintypeArrayprefix_shortobjectid1c5e29cc2fe01ed4!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectid8949e5650f0de9e3!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements0.0text/plain10.0text/plaintypeArrayprefix_shortobjectid96efcd08a503199b!application/vnd.pluto.tree+objectnormalprefixFloat64elements0.0text/plain-1.0text/plaintypeArrayprefix_shortobjectid7965b9fe69eeef07!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectideb6ab8595af988d4!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements8.0text/plain-1.0text/plaintypeArrayprefix_shortobjectidcb5693189533ec6e!application/vnd.pluto.tree+objectnormalprefixFloat64elements-0.948683text/plain0.316228text/plaintypeArrayprefix_shortobjectid1ec3964025f3aa0!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidcfcbe35619eca23c!application/vnd.pluto.tree+objecttypeArrayprefix_shortobjectid963e8fec2a6bcb82mime!application/vnd.pluto.tree+objectrootassigneeex_1_scenelast_run_timestampA lTҰpersist_js_state·has_pluto_hook_features§cell_id$2158a356-1a05-11eb-3f5b-4dfa810fc602depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$99c61b74-1941-11eb-2323-2bdb7c120a28queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA kW2persist_js_state·has_pluto_hook_features§cell_id$99c61b74-1941-11eb-2323-2bdb7c120a28depends_on_disabled_cells§runtime յpublished_object_keysdepends_on_skipped_cells§errored$78915326-1937-11eb-014f-fff29b3660a0queued¤logsrunning¦outputbody*<div class="markdown"><p>This can be described by Snell&#39;s law:</p>
<p class="tex">$$\frac&#123;n_1&#125;&#123;n_2&#125; &#61; \frac&#123;v_2&#125;&#123;v_1&#125; &#61; \frac&#123;\sin&#40;\theta_2&#41;&#125;&#123;\sin&#40;\theta_1&#41;&#125;$$</p>
<p>Here, <span class="tex">$n$</span> is the index of refraction, <span class="tex">$v$</span> is the speed &#40;not velocity &#40;sorry for the notation&#33;&#41;&#41;, and <span class="tex">$\theta$</span> is the angle with respect to the surface normal. Any variables with an subscript of 1 are in the outer medium &#40;air&#41;, and any variables with a subscript 2 are in the inner medium &#40;water&#41;.</p>
<p>This means that we can find the angle of the new ray of light as</p>
<p class="tex">$$\sin&#40;\theta_2&#41; &#61; \frac&#123;n_1&#125;&#123;n_2&#125;\sin&#40;\theta_1&#41;$$</p>
<p>The problem is that <span class="tex">$\sin$</span> is slow, so we typically want to rewrite this in terms of vector operations. This means that we want to rewrite everything to be in terms of dot products, but because <span class="tex">$A\cdot B &#61; |A||B|cos&#40;\theta&#41;$</span>, we really want to rewrite everything in terms of cosines first. So, using the fact that <span class="tex">$\sin&#40;\theta&#41;^2 &#43; \cos&#40;\theta&#41;^2 &#61; 1$</span>, we can rewrite the above equation to be:</p>
<p class="tex">$$\sin&#40;\theta_2&#41; &#61; \frac&#123;n_1&#125;&#123;n_2&#125;\sqrt&#123;1-\cos&#40;\theta_1&#41;^2&#125;$$</p>
<p>We also know that </p>
<p class="tex">$$\cos&#40;\theta_2&#41; &#61; \sqrt&#123;1-\sin&#40;\theta_2&#41;^2&#125; &#61; \sqrt&#123;1-\left&#40;\frac&#123;n_1&#125;&#123;n_2&#125;\right&#41;^2\left&#40;1-\cos&#40;\theta_1&#41;^2\right&#41;&#125;.$$</p>
<p>Finally, we know that the new light direction should be the same as the old one, but shifted towards &#40;or away&#41; from the normal according to the new refractive index. In particular:</p>
<p class="tex">$$n_2 \ell _2 &#61; &#123;n_1&#125; \ell _1 &#43; &#40;n_1\cos&#40;\theta_1&#41;-n_2\cos&#40;\theta_2&#41;&#41;\hat n,$$</p>
<p>where <span class="tex">$\hat n$</span> is the normal from the water&#39;s surface. Rewriting this, we find:</p>
<p class="tex">$$\ell _2 &#61; \left&#40;\frac&#123;n_1&#125;&#123;n_2&#125;\right&#41; \ell _1 &#43; \left&#40;\left&#40;\frac&#123;n_1&#125;&#123;n_2&#125;\right&#41;\cos&#40;\theta_1&#41;-\cos&#40;\theta_2&#41;\right&#41;\hat n.$$</p>
<p>Now, we already know <span class="tex">$\cos&#40;\theta_2&#41;$</span> in terms of <span class="tex">$\cos&#40;\theta_1&#41;$</span>, so we can just plug that in... But first, let&#39;s do some simplifications, such that </p>
<p class="tex">$$r &#61; \frac&#123;n_1&#125;&#123;n_2&#125;$$</p>
<p>and</p>
<p class="tex">$$c &#61; -\hat n \cdot \ell_1.$$</p>
<p>Now, we can rewrite everything such that</p>
<p class="tex">$$\ell_2 &#61; r\ell_1 &#43; \left&#40;rc-\sqrt&#123;1-r^2&#40;1-c^2&#41;&#125;\right&#41;\hat n.$$</p>
<p>The last step is to write this in code with a function that takes the light direction, the normal, and old and new indices of refraction:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gGYpersist_js_state·has_pluto_hook_features§cell_id$78915326-1937-11eb-014f-fff29b3660a0depends_on_disabled_cells§runtime @published_object_keysdepends_on_skipped_cells§errored$71b70da6-193e-11eb-0bc4-f309d24fd4efqueued¤logsrunning¦outputbody?<div class="markdown"><p>Now to move on to lenses. Like in lecture, we will focus exclusively on spherical lenses. Ultimately, there isn&#39;t a big difference between a lens and a spherical drop of water. It just has a slightly different refractive index and it&#39;s normal is defined slightly differently.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gGpersist_js_state·has_pluto_hook_features§cell_id$71b70da6-193e-11eb-0bc4-f309d24fd4efdepends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$ad5a7420-1c7f-11eb-042f-115a9ef4c676queued¤logsrunning¦outputbody<div class="markdown"><div class="admonition hint"><p class="admonition-title">Hint</p><p><code>Intersection</code> contains the intersected object, so you can retrieve the wall using <code>hit.object</code>, and the normal using <code>hit.object.normal</code>.</p>

</div>
</div>mimetext/htmlrootassigneelast_run_timestampA qJ2persist_js_state·has_pluto_hook_features§cell_id$ad5a7420-1c7f-11eb-042f-115a9ef4c676depends_on_disabled_cells§runtime}
published_object_keysdepends_on_skipped_cells§errored$4d69c36a-1c73-11eb-3ae3-23900db09c27queued¤logsrunning¦outputbodyi<div class="markdown"><p>There are two misses and three intersections. Just what we hoped&#33;</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gDpersist_js_state·has_pluto_hook_features§cell_id$4d69c36a-1c73-11eb-3ae3-23900db09c27depends_on_disabled_cells§runtime ّpublished_object_keysdepends_on_skipped_cells§errored$55f475a8-1c7a-11eb-377e-91d07fa0bdb6queued¤logsrunning¦outputbodyQ<div class="markdown"><p>And we can take the <strong>minimum</strong>:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gDEpersist_js_state·has_pluto_hook_features§cell_id$55f475a8-1c7a-11eb-377e-91d07fa0bdb6depends_on_disabled_cells§runtime ˵published_object_keysdepends_on_skipped_cells§errored$ebd05bf0-19c3-11eb-2559-7d0745a84025queued¤logsrunning¦outputbody<div class="markdown"><div class="admonition danger"><p class="admonition-title">Before you submit</p><p>Remember to fill in your <strong>name</strong> and <strong>Kerberos ID</strong> at the top of this notebook.</p>
</div>
</div>mimetext/htmlrootassigneelast_run_timestampA q;)persist_js_state·has_pluto_hook_features§cell_id$ebd05bf0-19c3-11eb-2559-7d0745a84025depends_on_disabled_cells§runtime 4published_object_keysdepends_on_skipped_cells§errored$5aa7c4e8-1ac3-11eb-23f3-03bd58e75c4bqueued¤logsrunning¦outputbodyM<div class="markdown"><h5><code>Intersection</code></h5>
<p>is a <strong>parametric type</strong>. The first field &#40;<code>object</code>&#41; is of type <code>T</code>, and <code>T</code> is a subtype of <code>Object</code>. Have a look at the definition above, and take note of how we write such statements in Julia syntax.</p>
<p>We also could have used <code>Object</code> directly as the type for the field <code>object</code>, but what&#39;s special about parametric types is that <code>T</code> becomes &quot;part of the type&quot;. Let&#39;s have a look at an example:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gC8persist_js_state·has_pluto_hook_features§cell_id$5aa7c4e8-1ac3-11eb-23f3-03bd58e75c4bdepends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$87a8e280-1c7c-11eb-2bb0-034011f6c10fqueued¤logsrunning¦outputbody<div class="markdown"><p>When we shoot a photon at the scene, we compute the intersections between the photon and every object in the scene. Click on the vector below to see all elements:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gDvpersist_js_state·has_pluto_hook_features§cell_id$87a8e280-1c7c-11eb-2bb0-034011f6c10fdepends_on_disabled_cells§runtime 
published_object_keysdepends_on_skipped_cells§errored$754eeec4-1a07-11eb-1329-8d9ae0948613queued¤logsrunning¦outputbody,closest_hit (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA pXPʰpersist_js_state·has_pluto_hook_features§cell_id$754eeec4-1a07-11eb-1329-8d9ae0948613depends_on_disabled_cells§runtime 
published_object_keysdepends_on_skipped_cells§errored$e135d490-1ac2-11eb-053e-914051f16e31queued¤logsrunning¦outputbody <div class="markdown"><p><br><br></p>
<h5>Wall geometry</h5>
<p>So, how do we find the location where it hits the wall? Well, because our walls are infinitely long, we are essentially trying to find the point at which 2 lines intersect.</p>
<p>To do this, we can combine a few dot products: one to find how far away we are, and another to scale that distance. Mathematically, it would look like:</p>
<p class="tex">$$D &#61; -\frac&#123;&#40;p_&#123;\text&#123;ray&#125;&#125; - p_&#123;\text&#123;wall&#125;&#125;&#41;\cdot \hat n&#125;&#123;\hat \ell \cdot \hat n&#125;,$$</p>
<p>where <span class="tex">$p$</span> is the position, <span class="tex">$\hat \ell$</span> is the direction of the light, and <span class="tex">$\hat n$</span> is the normal vector for the wall. subscripts <span class="tex">$i$</span>, <span class="tex">$r$</span>, and <span class="tex">$w$</span> represent the intersection point, ray, and wall respectively. The result is <span class="tex">$D$</span>, the amount that the photon needs to travel until it hits the wall.</p>
<p>👉 Write a function <code>intersection_distance</code> that implements this formula, and returns <span class="tex">$D$</span>. You can use <code>dot&#40;a,b&#41;</code> to compute the vector dot product <span class="tex">$a \cdot b$</span>.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gCpersist_js_state·has_pluto_hook_features§cell_id$e135d490-1ac2-11eb-053e-914051f16e31depends_on_disabled_cells§runtime 2published_object_keysdepends_on_skipped_cells§errored$d257a728-1a04-11eb-281d-bde30644f5f5queued¤logsrunning¦outputbodyprefixMain.workspace#3.WallelementsprefixWallelementspositionprefixFloat64elements10.0text/plain0.0text/plaintypeArrayprefix_shortobjectidfffdf189f71f6f9c!application/vnd.pluto.tree+objectnormalprefixFloat64elements-1.0text/plain0.0text/plaintypeArrayprefix_shortobjectid39926e9eea486b0d!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidc629b1cc33955b09!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements-10.0text/plain0.0text/plaintypeArrayprefix_shortobjectid60daa3e938d8db59!application/vnd.pluto.tree+objectnormalprefixFloat64elements1.0text/plain0.0text/plaintypeArrayprefix_shortobjectid81633505f9e9ed06!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectid5ce0d0254772ca24!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements0.0text/plain-10.0text/plaintypeArrayprefix_shortobjectidda9ea7f12775ea2!application/vnd.pluto.tree+objectnormalprefixFloat64elements0.0text/plain1.0text/plaintypeArrayprefix_shortobjectid1c5e29cc2fe01ed4!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectid8949e5650f0de9e3!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements0.0text/plain10.0text/plaintypeArrayprefix_shortobjectid96efcd08a503199b!application/vnd.pluto.tree+objectnormalprefixFloat64elements0.0text/plain-1.0text/plaintypeArrayprefix_shortobjectid7965b9fe69eeef07!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectideb6ab8595af988d4!application/vnd.pluto.tree+objecttypeArrayprefix_shortobjectidd487876164a22a8mime!application/vnd.pluto.tree+objectrootassigneebox_scenelast_run_timestampA k̰persist_js_state·has_pluto_hook_features§cell_id$d257a728-1a04-11eb-281d-bde30644f5f5depends_on_disabled_cells§runtimexCpublished_object_keysdepends_on_skipped_cells§errored$8cfa4902-1ad3-11eb-03a1-736898ff9cefqueued¤logsrunning¦outputbody*TODO_note (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA qpersist_js_state·has_pluto_hook_features§cell_id$8cfa4902-1ad3-11eb-03a1-736898ff9cefdepends_on_disabled_cells§runtime zpublished_object_keysdepends_on_skipped_cells§errored$ec85c940-19c3-11eb-3375-a90735beaec1queued¤logsrunning¦outputbody[<span style='display: inline; font-size: 2em; color: purple; font-weight: 900;'>TODO</span>mimetext/htmlrootassigneeTODOlast_run_timestampA qpersist_js_state·has_pluto_hook_features§cell_id$ec85c940-19c3-11eb-3375-a90735beaec1depends_on_disabled_cells§runtimebpublished_object_keysdepends_on_skipped_cells§errored$6c37c5f4-1a09-11eb-08ae-9dce752f29cbqueued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA l)ðpersist_js_state·has_pluto_hook_features§cell_id$6c37c5f4-1a09-11eb-08ae-9dce752f29cbdepends_on_disabled_cells§runtime #published_object_keysdepends_on_skipped_cells§errored$79532662-1c7e-11eb-2edf-57e7cfbc1edaqueued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA gE0persist_js_state·has_pluto_hook_features§cell_id$79532662-1c7e-11eb-2edf-57e7cfbc1edadepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$76d4351c-1c78-11eb-243f-5f6f5e485d5dqueued¤logsrunning¦outputbodyF=<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="200" viewBox="0 0 1600 800">
<defs>
  <clipPath id="clip890">
    <rect x="0" y="0" width="1600" height="800"/>
  </clipPath>
</defs>
<path clip-path="url(#clip890)" d="M0 800 L1600 800 L1600 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip891">
    <rect x="320" y="0" width="1121" height="800"/>
  </clipPath>
</defs>
<path clip-path="url(#clip890)" d="M170.867 703.088 L1552.76 703.088 L1552.76 47.2441 L170.867 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip892">
    <rect x="170" y="47" width="1383" height="657"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip892)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="243.091,703.088 243.091,47.2441 "/>
<polyline clip-path="url(#clip892)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="552.451,703.088 552.451,47.2441 "/>
<polyline clip-path="url(#clip892)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="861.811,703.088 861.811,47.2441 "/>
<polyline clip-path="url(#clip892)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1171.17,703.088 1171.17,47.2441 "/>
<polyline clip-path="url(#clip892)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1480.53,703.088 1480.53,47.2441 "/>
<polyline clip-path="url(#clip892)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,684.526 1552.76,684.526 "/>
<polyline clip-path="url(#clip892)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,529.846 1552.76,529.846 "/>
<polyline clip-path="url(#clip892)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,375.166 1552.76,375.166 "/>
<polyline clip-path="url(#clip892)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,220.486 1552.76,220.486 "/>
<polyline clip-path="url(#clip892)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,65.8057 1552.76,65.8057 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,703.088 1552.76,703.088 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="243.091,703.088 243.091,684.19 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="552.451,703.088 552.451,684.19 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="861.811,703.088 861.811,684.19 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1171.17,703.088 1171.17,684.19 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1480.53,703.088 1480.53,684.19 "/>
<path clip-path="url(#clip890)" d="M197.153 742.259 L226.829 742.259 L226.829 746.194 L197.153 746.194 L197.153 742.259 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M249.769 728.602 L237.963 747.051 L249.769 747.051 L249.769 728.602 M248.542 724.528 L254.422 724.528 L254.422 747.051 L259.352 747.051 L259.352 750.94 L254.422 750.94 L254.422 759.088 L249.769 759.088 L249.769 750.94 L234.167 750.94 L234.167 746.426 L248.542 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M277.084 727.607 Q273.473 727.607 271.644 731.171 Q269.838 734.713 269.838 741.843 Q269.838 748.949 271.644 752.514 Q273.473 756.055 277.084 756.055 Q280.718 756.055 282.523 752.514 Q284.352 748.949 284.352 741.843 Q284.352 734.713 282.523 731.171 Q280.718 727.607 277.084 727.607 M277.084 723.903 Q282.894 723.903 285.949 728.509 Q289.028 733.093 289.028 741.843 Q289.028 750.569 285.949 755.176 Q282.894 759.759 277.084 759.759 Q271.273 759.759 268.195 755.176 Q265.139 750.569 265.139 741.843 Q265.139 733.093 268.195 728.509 Q271.273 723.903 277.084 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M506.514 742.259 L536.19 742.259 L536.19 746.194 L506.514 746.194 L506.514 742.259 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M550.31 755.153 L566.629 755.153 L566.629 759.088 L544.685 759.088 L544.685 755.153 Q547.347 752.398 551.93 747.768 Q556.537 743.116 557.717 741.773 Q559.963 739.25 560.842 737.514 Q561.745 735.755 561.745 734.065 Q561.745 731.31 559.8 729.574 Q557.879 727.838 554.777 727.838 Q552.578 727.838 550.125 728.602 Q547.694 729.366 544.916 730.917 L544.916 726.195 Q547.74 725.06 550.194 724.482 Q552.648 723.903 554.685 723.903 Q560.055 723.903 563.25 726.588 Q566.444 729.273 566.444 733.764 Q566.444 735.894 565.634 737.815 Q564.847 739.713 562.74 742.306 Q562.162 742.977 559.06 746.194 Q555.958 749.389 550.31 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M586.444 727.607 Q582.833 727.607 581.004 731.171 Q579.199 734.713 579.199 741.843 Q579.199 748.949 581.004 752.514 Q582.833 756.055 586.444 756.055 Q590.078 756.055 591.884 752.514 Q593.712 748.949 593.712 741.843 Q593.712 734.713 591.884 731.171 Q590.078 727.607 586.444 727.607 M586.444 723.903 Q592.254 723.903 595.31 728.509 Q598.388 733.093 598.388 741.843 Q598.388 750.569 595.31 755.176 Q592.254 759.759 586.444 759.759 Q580.634 759.759 577.555 755.176 Q574.499 750.569 574.499 741.843 Q574.499 733.093 577.555 728.509 Q580.634 723.903 586.444 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M861.811 727.607 Q858.2 727.607 856.371 731.171 Q854.566 734.713 854.566 741.843 Q854.566 748.949 856.371 752.514 Q858.2 756.055 861.811 756.055 Q865.446 756.055 867.251 752.514 Q869.08 748.949 869.08 741.843 Q869.08 734.713 867.251 731.171 Q865.446 727.607 861.811 727.607 M861.811 723.903 Q867.621 723.903 870.677 728.509 Q873.756 733.093 873.756 741.843 Q873.756 750.569 870.677 755.176 Q867.621 759.759 861.811 759.759 Q856.001 759.759 852.922 755.176 Q849.867 750.569 849.867 741.843 Q849.867 733.093 852.922 728.509 Q856.001 723.903 861.811 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M1149.94 755.153 L1166.26 755.153 L1166.26 759.088 L1144.32 759.088 L1144.32 755.153 Q1146.98 752.398 1151.57 747.768 Q1156.17 743.116 1157.35 741.773 Q1159.6 739.25 1160.48 737.514 Q1161.38 735.755 1161.38 734.065 Q1161.38 731.31 1159.44 729.574 Q1157.51 727.838 1154.41 727.838 Q1152.21 727.838 1149.76 728.602 Q1147.33 729.366 1144.55 730.917 L1144.55 726.195 Q1147.38 725.06 1149.83 724.482 Q1152.28 723.903 1154.32 723.903 Q1159.69 723.903 1162.88 726.588 Q1166.08 729.273 1166.08 733.764 Q1166.08 735.894 1165.27 737.815 Q1164.48 739.713 1162.38 742.306 Q1161.8 742.977 1158.69 746.194 Q1155.59 749.389 1149.94 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M1186.08 727.607 Q1182.47 727.607 1180.64 731.171 Q1178.83 734.713 1178.83 741.843 Q1178.83 748.949 1180.64 752.514 Q1182.47 756.055 1186.08 756.055 Q1189.71 756.055 1191.52 752.514 Q1193.35 748.949 1193.35 741.843 Q1193.35 734.713 1191.52 731.171 Q1189.71 727.607 1186.08 727.607 M1186.08 723.903 Q1191.89 723.903 1194.94 728.509 Q1198.02 733.093 1198.02 741.843 Q1198.02 750.569 1194.94 755.176 Q1191.89 759.759 1186.08 759.759 Q1180.27 759.759 1177.19 755.176 Q1174.13 750.569 1174.13 741.843 Q1174.13 733.093 1177.19 728.509 Q1180.27 723.903 1186.08 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M1468.7 728.602 L1456.9 747.051 L1468.7 747.051 L1468.7 728.602 M1467.48 724.528 L1473.36 724.528 L1473.36 747.051 L1478.29 747.051 L1478.29 750.94 L1473.36 750.94 L1473.36 759.088 L1468.7 759.088 L1468.7 750.94 L1453.1 750.94 L1453.1 746.426 L1467.48 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M1496.02 727.607 Q1492.41 727.607 1490.58 731.171 Q1488.77 734.713 1488.77 741.843 Q1488.77 748.949 1490.58 752.514 Q1492.41 756.055 1496.02 756.055 Q1499.65 756.055 1501.46 752.514 Q1503.29 748.949 1503.29 741.843 Q1503.29 734.713 1501.46 731.171 Q1499.65 727.607 1496.02 727.607 M1496.02 723.903 Q1501.83 723.903 1504.88 728.509 Q1507.96 733.093 1507.96 741.843 Q1507.96 750.569 1504.88 755.176 Q1501.83 759.759 1496.02 759.759 Q1490.21 759.759 1487.13 755.176 Q1484.07 750.569 1484.07 741.843 Q1484.07 733.093 1487.13 728.509 Q1490.21 723.903 1496.02 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,703.088 170.867,47.2441 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,684.526 189.764,684.526 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,529.846 189.764,529.846 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,375.166 189.764,375.166 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,220.486 189.764,220.486 "/>
<polyline clip-path="url(#clip890)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,65.8057 189.764,65.8057 "/>
<path clip-path="url(#clip890)" d="M54.9921 684.978 L84.6679 684.978 L84.6679 688.913 L54.9921 688.913 L54.9921 684.978 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M98.7882 697.871 L115.108 697.871 L115.108 701.806 L93.1632 701.806 L93.1632 697.871 Q95.8252 695.116 100.409 690.487 Q105.015 685.834 106.196 684.492 Q108.441 681.968 109.321 680.232 Q110.223 678.473 110.223 676.783 Q110.223 674.029 108.279 672.293 Q106.358 670.556 103.256 670.556 Q101.057 670.556 98.603 671.32 Q96.1725 672.084 93.3947 673.635 L93.3947 668.913 Q96.2188 667.779 98.6724 667.2 Q101.126 666.621 103.163 666.621 Q108.534 666.621 111.728 669.306 Q114.922 671.992 114.922 676.482 Q114.922 678.612 114.112 680.533 Q113.325 682.431 111.219 685.024 Q110.64 685.695 107.538 688.913 Q104.436 692.107 98.7882 697.871 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M134.922 670.325 Q131.311 670.325 129.482 673.89 Q127.677 677.431 127.677 684.561 Q127.677 691.667 129.482 695.232 Q131.311 698.774 134.922 698.774 Q138.556 698.774 140.362 695.232 Q142.191 691.667 142.191 684.561 Q142.191 677.431 140.362 673.89 Q138.556 670.325 134.922 670.325 M134.922 666.621 Q140.732 666.621 143.788 671.228 Q146.867 675.811 146.867 684.561 Q146.867 693.288 143.788 697.894 Q140.732 702.478 134.922 702.478 Q129.112 702.478 126.033 697.894 Q122.978 693.288 122.978 684.561 Q122.978 675.811 126.033 671.228 Q129.112 666.621 134.922 666.621 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M54.9921 530.298 L84.6679 530.298 L84.6679 534.233 L54.9921 534.233 L54.9921 530.298 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M95.5706 543.191 L103.209 543.191 L103.209 516.825 L94.8993 518.492 L94.8993 514.233 L103.163 512.566 L107.839 512.566 L107.839 543.191 L115.478 543.191 L115.478 547.126 L95.5706 547.126 L95.5706 543.191 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M134.922 515.645 Q131.311 515.645 129.482 519.21 Q127.677 522.751 127.677 529.881 Q127.677 536.987 129.482 540.552 Q131.311 544.094 134.922 544.094 Q138.556 544.094 140.362 540.552 Q142.191 536.987 142.191 529.881 Q142.191 522.751 140.362 519.21 Q138.556 515.645 134.922 515.645 M134.922 511.941 Q140.732 511.941 143.788 516.548 Q146.867 521.131 146.867 529.881 Q146.867 538.608 143.788 543.214 Q140.732 547.797 134.922 547.797 Q129.112 547.797 126.033 543.214 Q122.978 538.608 122.978 529.881 Q122.978 521.131 126.033 516.548 Q129.112 511.941 134.922 511.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M134.922 360.965 Q131.311 360.965 129.482 364.529 Q127.677 368.071 127.677 375.201 Q127.677 382.307 129.482 385.872 Q131.311 389.414 134.922 389.414 Q138.556 389.414 140.362 385.872 Q142.191 382.307 142.191 375.201 Q142.191 368.071 140.362 364.529 Q138.556 360.965 134.922 360.965 M134.922 357.261 Q140.732 357.261 143.788 361.867 Q146.867 366.451 146.867 375.201 Q146.867 383.928 143.788 388.534 Q140.732 393.117 134.922 393.117 Q129.112 393.117 126.033 388.534 Q122.978 383.928 122.978 375.201 Q122.978 366.451 126.033 361.867 Q129.112 357.261 134.922 357.261 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M95.5706 233.831 L103.209 233.831 L103.209 207.465 L94.8993 209.132 L94.8993 204.873 L103.163 203.206 L107.839 203.206 L107.839 233.831 L115.478 233.831 L115.478 237.766 L95.5706 237.766 L95.5706 233.831 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M134.922 206.285 Q131.311 206.285 129.482 209.849 Q127.677 213.391 127.677 220.521 Q127.677 227.627 129.482 231.192 Q131.311 234.733 134.922 234.733 Q138.556 234.733 140.362 231.192 Q142.191 227.627 142.191 220.521 Q142.191 213.391 140.362 209.849 Q138.556 206.285 134.922 206.285 M134.922 202.581 Q140.732 202.581 143.788 207.187 Q146.867 211.771 146.867 220.521 Q146.867 229.247 143.788 233.854 Q140.732 238.437 134.922 238.437 Q129.112 238.437 126.033 233.854 Q122.978 229.247 122.978 220.521 Q122.978 211.771 126.033 207.187 Q129.112 202.581 134.922 202.581 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M98.7882 79.1505 L115.108 79.1505 L115.108 83.0857 L93.1632 83.0857 L93.1632 79.1505 Q95.8252 76.3959 100.409 71.7663 Q105.015 67.1136 106.196 65.771 Q108.441 63.2479 109.321 61.5118 Q110.223 59.7525 110.223 58.0627 Q110.223 55.3081 108.279 53.572 Q106.358 51.8359 103.256 51.8359 Q101.057 51.8359 98.603 52.5998 Q96.1725 53.3636 93.3947 54.9146 L93.3947 50.1924 Q96.2188 49.0581 98.6724 48.4794 Q101.126 47.9007 103.163 47.9007 Q108.534 47.9007 111.728 50.5859 Q114.922 53.2711 114.922 57.7618 Q114.922 59.8914 114.112 61.8127 Q113.325 63.7108 111.219 66.3034 Q110.64 66.9747 107.538 70.1923 Q104.436 73.3867 98.7882 79.1505 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip890)" d="M134.922 51.6044 Q131.311 51.6044 129.482 55.1692 Q127.677 58.7108 127.677 65.8404 Q127.677 72.9469 129.482 76.5117 Q131.311 80.0533 134.922 80.0533 Q138.556 80.0533 140.362 76.5117 Q142.191 72.9469 142.191 65.8404 Q142.191 58.7108 140.362 55.1692 Q138.556 51.6044 134.922 51.6044 M134.922 47.9007 Q140.732 47.9007 143.788 52.5072 Q146.867 57.0905 146.867 65.8404 Q146.867 74.5672 143.788 79.1737 Q140.732 83.757 134.922 83.757 Q129.112 83.757 126.033 79.1737 Q122.978 74.5672 122.978 65.8404 Q122.978 57.0905 126.033 52.5072 Q129.112 47.9007 134.922 47.9007 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip892)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1016.49,65.8057 1016.49,684.526 "/>
<polyline clip-path="url(#clip892)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="707.131,684.526 707.131,65.8057 "/>
<polyline clip-path="url(#clip892)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1171.17,529.846 552.451,529.846 "/>
<polyline clip-path="url(#clip892)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="552.451,220.486 1171.17,220.486 "/>
<polyline clip-path="url(#clip892)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="846.343,344.23 930.893,411.869 "/>
<polyline clip-path="url(#clip892)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="919.648,387.506 930.893,411.869 904.655,406.247 "/>
<polyline clip-path="url(#clip892)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="930.893,411.869 846.343,344.23 "/>
<circle clip-path="url(#clip892)" cx="846.343" cy="344.23" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="1.6"/>
</svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA oXpersist_js_state·has_pluto_hook_features§cell_id$76d4351c-1c78-11eb-243f-5f6f5e485d5ddepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$3663bf80-1a06-11eb-3596-8fbbed28cc38queued¤logsrunning¦outputbody|Z<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600">
<defs>
  <clipPath id="clip010">
    <rect x="0" y="0" width="2400" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip010)" d="M0 1600 L2400 1600 L2400 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip011">
    <rect x="480" y="0" width="1681" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip010)" d="M178.867 1486.45 L2352.76 1486.45 L2352.76 47.2441 L178.867 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip012">
    <rect x="178" y="47" width="2175" height="1440"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip012)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="293.957,1486.45 293.957,47.2441 "/>
<polyline clip-path="url(#clip012)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="651.752,1486.45 651.752,47.2441 "/>
<polyline clip-path="url(#clip012)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1009.55,1486.45 1009.55,47.2441 "/>
<polyline clip-path="url(#clip012)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1367.34,1486.45 1367.34,47.2441 "/>
<polyline clip-path="url(#clip012)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1725.14,1486.45 1725.14,47.2441 "/>
<polyline clip-path="url(#clip012)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2082.94,1486.45 2082.94,47.2441 "/>
<polyline clip-path="url(#clip012)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,1446.66 2352.76,1446.66 "/>
<polyline clip-path="url(#clip012)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,1088.86 2352.76,1088.86 "/>
<polyline clip-path="url(#clip012)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,731.066 2352.76,731.066 "/>
<polyline clip-path="url(#clip012)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,373.271 2352.76,373.271 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1486.45 2352.76,1486.45 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="293.957,1486.45 293.957,1467.55 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="651.752,1486.45 651.752,1467.55 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1009.55,1486.45 1009.55,1467.55 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1367.34,1486.45 1367.34,1467.55 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1725.14,1486.45 1725.14,1467.55 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2082.94,1486.45 2082.94,1467.55 "/>
<path clip-path="url(#clip010)" d="M248.019 1532.02 L277.695 1532.02 L277.695 1535.95 L248.019 1535.95 L248.019 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M291.815 1544.91 L308.135 1544.91 L308.135 1548.85 L286.19 1548.85 L286.19 1544.91 Q288.852 1542.16 293.436 1537.53 Q298.042 1532.88 299.223 1531.53 Q301.468 1529.01 302.348 1527.27 Q303.25 1525.51 303.25 1523.82 Q303.25 1521.07 301.306 1519.33 Q299.385 1517.6 296.283 1517.6 Q294.084 1517.6 291.63 1518.36 Q289.2 1519.13 286.422 1520.68 L286.422 1515.95 Q289.246 1514.82 291.7 1514.24 Q294.153 1513.66 296.19 1513.66 Q301.561 1513.66 304.755 1516.35 Q307.949 1519.03 307.949 1523.52 Q307.949 1525.65 307.139 1527.57 Q306.352 1529.47 304.246 1532.07 Q303.667 1532.74 300.565 1535.95 Q297.463 1539.15 291.815 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M327.949 1517.37 Q324.338 1517.37 322.51 1520.93 Q320.704 1524.47 320.704 1531.6 Q320.704 1538.71 322.51 1542.27 Q324.338 1545.82 327.949 1545.82 Q331.584 1545.82 333.389 1542.27 Q335.218 1538.71 335.218 1531.6 Q335.218 1524.47 333.389 1520.93 Q331.584 1517.37 327.949 1517.37 M327.949 1513.66 Q333.76 1513.66 336.815 1518.27 Q339.894 1522.85 339.894 1531.6 Q339.894 1540.33 336.815 1544.94 Q333.76 1549.52 327.949 1549.52 Q322.139 1549.52 319.061 1544.94 Q316.005 1540.33 316.005 1531.6 Q316.005 1522.85 319.061 1518.27 Q322.139 1513.66 327.949 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M605.815 1532.02 L635.491 1532.02 L635.491 1535.95 L605.815 1535.95 L605.815 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M646.393 1544.91 L654.032 1544.91 L654.032 1518.55 L645.722 1520.21 L645.722 1515.95 L653.986 1514.29 L658.662 1514.29 L658.662 1544.91 L666.301 1544.91 L666.301 1548.85 L646.393 1548.85 L646.393 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M685.745 1517.37 Q682.134 1517.37 680.305 1520.93 Q678.5 1524.47 678.5 1531.6 Q678.5 1538.71 680.305 1542.27 Q682.134 1545.82 685.745 1545.82 Q689.379 1545.82 691.185 1542.27 Q693.014 1538.71 693.014 1531.6 Q693.014 1524.47 691.185 1520.93 Q689.379 1517.37 685.745 1517.37 M685.745 1513.66 Q691.555 1513.66 694.611 1518.27 Q697.69 1522.85 697.69 1531.6 Q697.69 1540.33 694.611 1544.94 Q691.555 1549.52 685.745 1549.52 Q679.935 1549.52 676.856 1544.94 Q673.801 1540.33 673.801 1531.6 Q673.801 1522.85 676.856 1518.27 Q679.935 1513.66 685.745 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1009.55 1517.37 Q1005.94 1517.37 1004.11 1520.93 Q1002.3 1524.47 1002.3 1531.6 Q1002.3 1538.71 1004.11 1542.27 Q1005.94 1545.82 1009.55 1545.82 Q1013.18 1545.82 1014.99 1542.27 Q1016.82 1538.71 1016.82 1531.6 Q1016.82 1524.47 1014.99 1520.93 Q1013.18 1517.37 1009.55 1517.37 M1009.55 1513.66 Q1015.36 1513.66 1018.41 1518.27 Q1021.49 1522.85 1021.49 1531.6 Q1021.49 1540.33 1018.41 1544.94 Q1015.36 1549.52 1009.55 1549.52 Q1003.74 1549.52 1000.66 1544.94 Q997.604 1540.33 997.604 1531.6 Q997.604 1522.85 1000.66 1518.27 Q1003.74 1513.66 1009.55 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1342.03 1544.91 L1349.67 1544.91 L1349.67 1518.55 L1341.36 1520.21 L1341.36 1515.95 L1349.62 1514.29 L1354.3 1514.29 L1354.3 1544.91 L1361.94 1544.91 L1361.94 1548.85 L1342.03 1548.85 L1342.03 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1381.38 1517.37 Q1377.77 1517.37 1375.94 1520.93 Q1374.14 1524.47 1374.14 1531.6 Q1374.14 1538.71 1375.94 1542.27 Q1377.77 1545.82 1381.38 1545.82 Q1385.02 1545.82 1386.82 1542.27 Q1388.65 1538.71 1388.65 1531.6 Q1388.65 1524.47 1386.82 1520.93 Q1385.02 1517.37 1381.38 1517.37 M1381.38 1513.66 Q1387.19 1513.66 1390.25 1518.27 Q1393.33 1522.85 1393.33 1531.6 Q1393.33 1540.33 1390.25 1544.94 Q1387.19 1549.52 1381.38 1549.52 Q1375.57 1549.52 1372.49 1544.94 Q1369.44 1540.33 1369.44 1531.6 Q1369.44 1522.85 1372.49 1518.27 Q1375.57 1513.66 1381.38 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1703.91 1544.91 L1720.23 1544.91 L1720.23 1548.85 L1698.29 1548.85 L1698.29 1544.91 Q1700.95 1542.16 1705.53 1537.53 Q1710.14 1532.88 1711.32 1531.53 Q1713.57 1529.01 1714.45 1527.27 Q1715.35 1525.51 1715.35 1523.82 Q1715.35 1521.07 1713.4 1519.33 Q1711.48 1517.6 1708.38 1517.6 Q1706.18 1517.6 1703.73 1518.36 Q1701.3 1519.13 1698.52 1520.68 L1698.52 1515.95 Q1701.34 1514.82 1703.8 1514.24 Q1706.25 1513.66 1708.29 1513.66 Q1713.66 1513.66 1716.85 1516.35 Q1720.05 1519.03 1720.05 1523.52 Q1720.05 1525.65 1719.24 1527.57 Q1718.45 1529.47 1716.34 1532.07 Q1715.76 1532.74 1712.66 1535.95 Q1709.56 1539.15 1703.91 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1740.05 1517.37 Q1736.44 1517.37 1734.61 1520.93 Q1732.8 1524.47 1732.8 1531.6 Q1732.8 1538.71 1734.61 1542.27 Q1736.44 1545.82 1740.05 1545.82 Q1743.68 1545.82 1745.49 1542.27 Q1747.32 1538.71 1747.32 1531.6 Q1747.32 1524.47 1745.49 1520.93 Q1743.68 1517.37 1740.05 1517.37 M1740.05 1513.66 Q1745.86 1513.66 1748.91 1518.27 Q1751.99 1522.85 1751.99 1531.6 Q1751.99 1540.33 1748.91 1544.94 Q1745.86 1549.52 1740.05 1549.52 Q1734.24 1549.52 1731.16 1544.94 Q1728.1 1540.33 1728.1 1531.6 Q1728.1 1522.85 1731.16 1518.27 Q1734.24 1513.66 1740.05 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2071.78 1530.21 Q2075.13 1530.93 2077.01 1533.2 Q2078.91 1535.47 2078.91 1538.8 Q2078.91 1543.92 2075.39 1546.72 Q2071.87 1549.52 2065.39 1549.52 Q2063.21 1549.52 2060.9 1549.08 Q2058.61 1548.66 2056.15 1547.81 L2056.15 1543.29 Q2058.1 1544.43 2060.41 1545.01 Q2062.73 1545.58 2065.25 1545.58 Q2069.65 1545.58 2071.94 1543.85 Q2074.25 1542.11 2074.25 1538.8 Q2074.25 1535.75 2072.1 1534.03 Q2069.97 1532.3 2066.15 1532.3 L2062.13 1532.3 L2062.13 1528.45 L2066.34 1528.45 Q2069.79 1528.45 2071.62 1527.09 Q2073.44 1525.7 2073.44 1523.11 Q2073.44 1520.45 2071.55 1519.03 Q2069.67 1517.6 2066.15 1517.6 Q2064.23 1517.6 2062.03 1518.01 Q2059.83 1518.43 2057.19 1519.31 L2057.19 1515.14 Q2059.86 1514.4 2062.17 1514.03 Q2064.51 1513.66 2066.57 1513.66 Q2071.89 1513.66 2075 1516.09 Q2078.1 1518.5 2078.1 1522.62 Q2078.1 1525.49 2076.45 1527.48 Q2074.81 1529.45 2071.78 1530.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2097.77 1517.37 Q2094.16 1517.37 2092.33 1520.93 Q2090.53 1524.47 2090.53 1531.6 Q2090.53 1538.71 2092.33 1542.27 Q2094.16 1545.82 2097.77 1545.82 Q2101.41 1545.82 2103.21 1542.27 Q2105.04 1538.71 2105.04 1531.6 Q2105.04 1524.47 2103.21 1520.93 Q2101.41 1517.37 2097.77 1517.37 M2097.77 1513.66 Q2103.58 1513.66 2106.64 1518.27 Q2109.72 1522.85 2109.72 1531.6 Q2109.72 1540.33 2106.64 1544.94 Q2103.58 1549.52 2097.77 1549.52 Q2091.96 1549.52 2088.88 1544.94 Q2085.83 1540.33 2085.83 1531.6 Q2085.83 1522.85 2088.88 1518.27 Q2091.96 1513.66 2097.77 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1486.45 178.867,47.2441 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1446.66 197.764,1446.66 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1088.86 197.764,1088.86 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,731.066 197.764,731.066 "/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,373.271 197.764,373.271 "/>
<path clip-path="url(#clip010)" d="M50.9921 1447.11 L80.6679 1447.11 L80.6679 1451.04 L50.9921 1451.04 L50.9921 1447.11 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M94.7882 1460 L111.108 1460 L111.108 1463.94 L89.1632 1463.94 L89.1632 1460 Q91.8252 1457.25 96.4085 1452.62 Q101.015 1447.97 102.196 1446.62 Q104.441 1444.1 105.321 1442.36 Q106.223 1440.6 106.223 1438.91 Q106.223 1436.16 104.279 1434.42 Q102.358 1432.69 99.2558 1432.69 Q97.0567 1432.69 94.603 1433.45 Q92.1725 1434.22 89.3947 1435.77 L89.3947 1431.04 Q92.2188 1429.91 94.6724 1429.33 Q97.1261 1428.75 99.1632 1428.75 Q104.534 1428.75 107.728 1431.44 Q110.922 1434.12 110.922 1438.61 Q110.922 1440.74 110.112 1442.66 Q109.325 1444.56 107.219 1447.16 Q106.64 1447.83 103.538 1451.04 Q100.436 1454.24 94.7882 1460 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M130.922 1432.46 Q127.311 1432.46 125.482 1436.02 Q123.677 1439.56 123.677 1446.69 Q123.677 1453.8 125.482 1457.36 Q127.311 1460.91 130.922 1460.91 Q134.556 1460.91 136.362 1457.36 Q138.191 1453.8 138.191 1446.69 Q138.191 1439.56 136.362 1436.02 Q134.556 1432.46 130.922 1432.46 M130.922 1428.75 Q136.732 1428.75 139.788 1433.36 Q142.867 1437.94 142.867 1446.69 Q142.867 1455.42 139.788 1460.03 Q136.732 1464.61 130.922 1464.61 Q125.112 1464.61 122.033 1460.03 Q118.978 1455.42 118.978 1446.69 Q118.978 1437.94 122.033 1433.36 Q125.112 1428.75 130.922 1428.75 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M50.9921 1089.31 L80.6679 1089.31 L80.6679 1093.25 L50.9921 1093.25 L50.9921 1089.31 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M91.5706 1102.21 L99.2095 1102.21 L99.2095 1075.84 L90.8993 1077.51 L90.8993 1073.25 L99.1632 1071.58 L103.839 1071.58 L103.839 1102.21 L111.478 1102.21 L111.478 1106.14 L91.5706 1106.14 L91.5706 1102.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M130.922 1074.66 Q127.311 1074.66 125.482 1078.23 Q123.677 1081.77 123.677 1088.9 Q123.677 1096 125.482 1099.57 Q127.311 1103.11 130.922 1103.11 Q134.556 1103.11 136.362 1099.57 Q138.191 1096 138.191 1088.9 Q138.191 1081.77 136.362 1078.23 Q134.556 1074.66 130.922 1074.66 M130.922 1070.96 Q136.732 1070.96 139.788 1075.56 Q142.867 1080.15 142.867 1088.9 Q142.867 1097.62 139.788 1102.23 Q136.732 1106.81 130.922 1106.81 Q125.112 1106.81 122.033 1102.23 Q118.978 1097.62 118.978 1088.9 Q118.978 1080.15 122.033 1075.56 Q125.112 1070.96 130.922 1070.96 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M130.922 716.865 Q127.311 716.865 125.482 720.43 Q123.677 723.972 123.677 731.101 Q123.677 738.208 125.482 741.772 Q127.311 745.314 130.922 745.314 Q134.556 745.314 136.362 741.772 Q138.191 738.208 138.191 731.101 Q138.191 723.972 136.362 720.43 Q134.556 716.865 130.922 716.865 M130.922 713.161 Q136.732 713.161 139.788 717.768 Q142.867 722.351 142.867 731.101 Q142.867 739.828 139.788 744.434 Q136.732 749.018 130.922 749.018 Q125.112 749.018 122.033 744.434 Q118.978 739.828 118.978 731.101 Q118.978 722.351 122.033 717.768 Q125.112 713.161 130.922 713.161 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M91.5706 386.615 L99.2095 386.615 L99.2095 360.25 L90.8993 361.917 L90.8993 357.657 L99.1632 355.991 L103.839 355.991 L103.839 386.615 L111.478 386.615 L111.478 390.551 L91.5706 390.551 L91.5706 386.615 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M130.922 359.069 Q127.311 359.069 125.482 362.634 Q123.677 366.176 123.677 373.305 Q123.677 380.412 125.482 383.977 Q127.311 387.518 130.922 387.518 Q134.556 387.518 136.362 383.977 Q138.191 380.412 138.191 373.305 Q138.191 366.176 136.362 362.634 Q134.556 359.069 130.922 359.069 M130.922 355.366 Q136.732 355.366 139.788 359.972 Q142.867 364.555 142.867 373.305 Q142.867 382.032 139.788 386.639 Q136.732 391.222 130.922 391.222 Q125.112 391.222 122.033 386.639 Q118.978 382.032 118.978 373.305 Q118.978 364.555 122.033 359.972 Q125.112 355.366 130.922 355.366 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip012)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1522.07,87.9763 1069.49,1445.72 "/>
<polyline clip-path="url(#clip012)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1009.55,695.287 1093.77,810.997 "/>
<polyline clip-path="url(#clip012)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1087.14,771.299 1093.77,810.997 1058.03,792.485 "/>
<polyline clip-path="url(#clip012)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1093.77,810.997 1009.55,695.287 "/>
<circle clip-path="url(#clip012)" cx="1009.55" cy="695.287" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<circle clip-path="url(#clip012)" cx="1222.24" cy="987.485" r="14.4" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<path clip-path="url(#clip010)" d="M1650.71 302.578 L2280.29 302.578 L2280.29 95.2176 L1650.71 95.2176  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<polyline clip-path="url(#clip010)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1650.71,302.578 2280.29,302.578 2280.29,95.2176 1650.71,95.2176 1650.71,302.578 "/>
<polyline clip-path="url(#clip010)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1674.86,147.058 1819.79,147.058 "/>
<path clip-path="url(#clip010)" d="M1843.94 129.778 L1848.66 129.778 L1855.93 158.99 L1863.18 129.778 L1868.43 129.778 L1875.7 158.99 L1882.95 129.778 L1887.69 129.778 L1879.01 164.338 L1873.13 164.338 L1865.84 134.338 L1858.48 164.338 L1852.6 164.338 L1843.94 129.778 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1902.46 151.305 Q1897.3 151.305 1895.31 152.486 Q1893.32 153.666 1893.32 156.514 Q1893.32 158.782 1894.8 160.125 Q1896.3 161.444 1898.87 161.444 Q1902.41 161.444 1904.54 158.944 Q1906.7 156.421 1906.7 152.254 L1906.7 151.305 L1902.46 151.305 M1910.96 149.546 L1910.96 164.338 L1906.7 164.338 L1906.7 160.402 Q1905.24 162.763 1903.06 163.898 Q1900.89 165.009 1897.74 165.009 Q1893.76 165.009 1891.4 162.787 Q1889.06 160.541 1889.06 156.791 Q1889.06 152.416 1891.97 150.194 Q1894.91 147.972 1900.72 147.972 L1906.7 147.972 L1906.7 147.555 Q1906.7 144.615 1904.75 143.018 Q1902.83 141.398 1899.33 141.398 Q1897.11 141.398 1895.01 141.93 Q1892.9 142.463 1890.96 143.527 L1890.96 139.592 Q1893.29 138.69 1895.49 138.25 Q1897.69 137.787 1899.77 137.787 Q1905.4 137.787 1908.18 140.703 Q1910.96 143.62 1910.96 149.546 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1919.73 128.319 L1923.99 128.319 L1923.99 164.338 L1919.73 164.338 L1919.73 128.319 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1932.9 128.319 L1937.16 128.319 L1937.16 164.338 L1932.9 164.338 L1932.9 128.319 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip010)" cx="1747.32" cy="198.898" r="19.7486" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="5.85143"/>
<path clip-path="url(#clip010)" d="M1848.62 185.46 L1848.62 198.446 L1854.5 198.446 Q1857.76 198.446 1859.54 196.756 Q1861.33 195.067 1861.33 191.942 Q1861.33 188.84 1859.54 187.15 Q1857.76 185.46 1854.5 185.46 L1848.62 185.46 M1843.94 181.618 L1854.5 181.618 Q1860.31 181.618 1863.27 184.256 Q1866.26 186.872 1866.26 191.942 Q1866.26 197.057 1863.27 199.673 Q1860.31 202.289 1854.5 202.289 L1848.62 202.289 L1848.62 216.178 L1843.94 216.178 L1843.94 181.618 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1893.9 200.529 L1893.9 216.178 L1889.64 216.178 L1889.64 200.668 Q1889.64 196.988 1888.2 195.159 Q1886.77 193.33 1883.9 193.33 Q1880.45 193.33 1878.46 195.53 Q1876.46 197.729 1876.46 201.525 L1876.46 216.178 L1872.18 216.178 L1872.18 180.159 L1876.46 180.159 L1876.46 194.28 Q1877.99 191.942 1880.05 190.784 Q1882.14 189.627 1884.84 189.627 Q1889.31 189.627 1891.6 192.405 Q1893.9 195.159 1893.9 200.529 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1902.39 190.252 L1906.65 190.252 L1906.65 216.178 L1902.39 216.178 L1902.39 190.252 M1902.39 180.159 L1906.65 180.159 L1906.65 185.553 L1902.39 185.553 L1902.39 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1915.56 180.159 L1919.82 180.159 L1919.82 216.178 L1915.56 216.178 L1915.56 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1928.73 190.252 L1932.99 190.252 L1932.99 216.178 L1928.73 216.178 L1928.73 190.252 M1928.73 180.159 L1932.99 180.159 L1932.99 185.553 L1928.73 185.553 L1928.73 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1946.02 212.289 L1946.02 226.039 L1941.74 226.039 L1941.74 190.252 L1946.02 190.252 L1946.02 194.187 Q1947.37 191.872 1949.4 190.761 Q1951.46 189.627 1954.31 189.627 Q1959.03 189.627 1961.97 193.377 Q1964.94 197.127 1964.94 203.238 Q1964.94 209.349 1961.97 213.099 Q1959.03 216.849 1954.31 216.849 Q1951.46 216.849 1949.4 215.738 Q1947.37 214.603 1946.02 212.289 M1960.52 203.238 Q1960.52 198.539 1958.57 195.877 Q1956.65 193.192 1953.27 193.192 Q1949.89 193.192 1947.95 195.877 Q1946.02 198.539 1946.02 203.238 Q1946.02 207.937 1947.95 210.622 Q1949.89 213.284 1953.27 213.284 Q1956.65 213.284 1958.57 210.622 Q1960.52 207.937 1960.52 203.238 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip010)" cx="1747.32" cy="250.738" r="20.48" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="4.55111"/>
<path clip-path="url(#clip010)" d="M1843.94 233.458 L1848.62 233.458 L1848.62 268.018 L1843.94 268.018 L1843.94 233.458 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1879.29 252.369 L1879.29 268.018 L1875.03 268.018 L1875.03 252.508 Q1875.03 248.828 1873.59 246.999 Q1872.16 245.17 1869.29 245.17 Q1865.84 245.17 1863.85 247.37 Q1861.86 249.569 1861.86 253.365 L1861.86 268.018 L1857.58 268.018 L1857.58 242.092 L1861.86 242.092 L1861.86 246.12 Q1863.39 243.782 1865.45 242.624 Q1867.53 241.467 1870.24 241.467 Q1874.71 241.467 1877 244.245 Q1879.29 246.999 1879.29 252.369 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1892 234.731 L1892 242.092 L1900.77 242.092 L1900.77 245.402 L1892 245.402 L1892 259.476 Q1892 262.647 1892.85 263.55 Q1893.73 264.453 1896.4 264.453 L1900.77 264.453 L1900.77 268.018 L1896.4 268.018 Q1891.46 268.018 1889.59 266.189 Q1887.71 264.337 1887.71 259.476 L1887.71 245.402 L1884.59 245.402 L1884.59 242.092 L1887.71 242.092 L1887.71 234.731 L1892 234.731 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1928.55 253.99 L1928.55 256.073 L1908.96 256.073 Q1909.24 260.471 1911.6 262.786 Q1913.99 265.078 1918.22 265.078 Q1920.68 265.078 1922.97 264.476 Q1925.28 263.874 1927.55 262.67 L1927.55 266.698 Q1925.26 267.67 1922.85 268.18 Q1920.45 268.689 1917.97 268.689 Q1911.77 268.689 1908.13 265.078 Q1904.52 261.467 1904.52 255.309 Q1904.52 248.944 1907.95 245.217 Q1911.4 241.467 1917.23 241.467 Q1922.46 241.467 1925.49 244.846 Q1928.55 248.203 1928.55 253.99 M1924.29 252.74 Q1924.24 249.245 1922.32 247.161 Q1920.42 245.078 1917.27 245.078 Q1913.71 245.078 1911.56 247.092 Q1909.43 249.106 1909.1 252.763 L1924.29 252.74 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1950.56 246.073 Q1949.84 245.657 1948.99 245.471 Q1948.15 245.263 1947.14 245.263 Q1943.52 245.263 1941.58 247.624 Q1939.66 249.962 1939.66 254.36 L1939.66 268.018 L1935.38 268.018 L1935.38 242.092 L1939.66 242.092 L1939.66 246.12 Q1941 243.758 1943.15 242.624 Q1945.31 241.467 1948.39 241.467 Q1948.83 241.467 1949.36 241.536 Q1949.89 241.583 1950.54 241.698 L1950.56 246.073 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M1971.56 242.856 L1971.56 246.883 Q1969.75 245.957 1967.81 245.495 Q1965.86 245.032 1963.78 245.032 Q1960.61 245.032 1959.01 246.004 Q1957.44 246.976 1957.44 248.92 Q1957.44 250.402 1958.57 251.258 Q1959.71 252.092 1963.13 252.856 L1964.59 253.18 Q1969.13 254.152 1971.02 255.934 Q1972.95 257.694 1972.95 260.865 Q1972.95 264.476 1970.08 266.582 Q1967.23 268.689 1962.23 268.689 Q1960.14 268.689 1957.88 268.272 Q1955.63 267.879 1953.13 267.068 L1953.13 262.67 Q1955.49 263.897 1957.78 264.522 Q1960.08 265.124 1962.32 265.124 Q1965.33 265.124 1966.95 264.106 Q1968.57 263.064 1968.57 261.189 Q1968.57 259.453 1967.39 258.527 Q1966.23 257.601 1962.27 256.744 L1960.79 256.397 Q1956.83 255.564 1955.08 253.851 Q1953.32 252.115 1953.32 249.106 Q1953.32 245.448 1955.91 243.458 Q1958.5 241.467 1963.27 241.467 Q1965.63 241.467 1967.71 241.814 Q1969.8 242.161 1971.56 242.856 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2001.9 253.99 L2001.9 256.073 L1982.32 256.073 Q1982.6 260.471 1984.96 262.786 Q1987.34 265.078 1991.58 265.078 Q1994.03 265.078 1996.33 264.476 Q1998.64 263.874 2000.91 262.67 L2000.91 266.698 Q1998.62 267.67 1996.21 268.18 Q1993.8 268.689 1991.33 268.689 Q1985.12 268.689 1981.49 265.078 Q1977.88 261.467 1977.88 255.309 Q1977.88 248.944 1981.3 245.217 Q1984.75 241.467 1990.58 241.467 Q1995.82 241.467 1998.85 244.846 Q2001.9 248.203 2001.9 253.99 M1997.64 252.74 Q1997.6 249.245 1995.68 247.161 Q1993.78 245.078 1990.63 245.078 Q1987.07 245.078 1984.91 247.092 Q1982.78 249.106 1982.46 252.763 L1997.64 252.74 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2027.55 243.087 L2027.55 247.069 Q2025.75 246.073 2023.92 245.587 Q2022.11 245.078 2020.26 245.078 Q2016.12 245.078 2013.83 247.717 Q2011.53 250.332 2011.53 255.078 Q2011.53 259.823 2013.83 262.462 Q2016.12 265.078 2020.26 265.078 Q2022.11 265.078 2023.92 264.592 Q2025.75 264.082 2027.55 263.087 L2027.55 267.022 Q2025.77 267.856 2023.85 268.272 Q2021.95 268.689 2019.8 268.689 Q2013.94 268.689 2010.49 265.008 Q2007.04 261.328 2007.04 255.078 Q2007.04 248.735 2010.51 245.101 Q2014.01 241.467 2020.08 241.467 Q2022.04 241.467 2023.92 241.883 Q2025.79 242.277 2027.55 243.087 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2039.17 234.731 L2039.17 242.092 L2047.95 242.092 L2047.95 245.402 L2039.17 245.402 L2039.17 259.476 Q2039.17 262.647 2040.03 263.55 Q2040.91 264.453 2043.57 264.453 L2047.95 264.453 L2047.95 268.018 L2043.57 268.018 Q2038.64 268.018 2036.76 266.189 Q2034.89 264.337 2034.89 259.476 L2034.89 245.402 L2031.76 245.402 L2031.76 242.092 L2034.89 242.092 L2034.89 234.731 L2039.17 234.731 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2053.55 242.092 L2057.81 242.092 L2057.81 268.018 L2053.55 268.018 L2053.55 242.092 M2053.55 231.999 L2057.81 231.999 L2057.81 237.393 L2053.55 237.393 L2053.55 231.999 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2076.76 245.078 Q2073.34 245.078 2071.35 247.763 Q2069.36 250.425 2069.36 255.078 Q2069.36 259.731 2071.32 262.416 Q2073.32 265.078 2076.76 265.078 Q2080.17 265.078 2082.16 262.393 Q2084.15 259.707 2084.15 255.078 Q2084.15 250.471 2082.16 247.786 Q2080.17 245.078 2076.76 245.078 M2076.76 241.467 Q2082.32 241.467 2085.49 245.078 Q2088.66 248.689 2088.66 255.078 Q2088.66 261.444 2085.49 265.078 Q2082.32 268.689 2076.76 268.689 Q2071.19 268.689 2068.01 265.078 Q2064.87 261.444 2064.87 255.078 Q2064.87 248.689 2068.01 245.078 Q2071.19 241.467 2076.76 241.467 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2117.27 252.369 L2117.27 268.018 L2113.01 268.018 L2113.01 252.508 Q2113.01 248.828 2111.58 246.999 Q2110.14 245.17 2107.27 245.17 Q2103.82 245.17 2101.83 247.37 Q2099.84 249.569 2099.84 253.365 L2099.84 268.018 L2095.56 268.018 L2095.56 242.092 L2099.84 242.092 L2099.84 246.12 Q2101.37 243.782 2103.43 242.624 Q2105.51 241.467 2108.22 241.467 Q2112.69 241.467 2114.98 244.245 Q2117.27 246.999 2117.27 252.369 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2144.96 264.129 L2144.96 277.879 L2140.68 277.879 L2140.68 242.092 L2144.96 242.092 L2144.96 246.027 Q2146.3 243.712 2148.34 242.601 Q2150.4 241.467 2153.25 241.467 Q2157.97 241.467 2160.91 245.217 Q2163.87 248.967 2163.87 255.078 Q2163.87 261.189 2160.91 264.939 Q2157.97 268.689 2153.25 268.689 Q2150.4 268.689 2148.34 267.578 Q2146.3 266.443 2144.96 264.129 M2159.45 255.078 Q2159.45 250.379 2157.5 247.717 Q2155.58 245.032 2152.2 245.032 Q2148.82 245.032 2146.88 247.717 Q2144.96 250.379 2144.96 255.078 Q2144.96 259.777 2146.88 262.462 Q2148.82 265.124 2152.2 265.124 Q2155.58 265.124 2157.5 262.462 Q2159.45 259.777 2159.45 255.078 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2180.98 245.078 Q2177.55 245.078 2175.56 247.763 Q2173.57 250.425 2173.57 255.078 Q2173.57 259.731 2175.54 262.416 Q2177.53 265.078 2180.98 265.078 Q2184.38 265.078 2186.37 262.393 Q2188.36 259.707 2188.36 255.078 Q2188.36 250.471 2186.37 247.786 Q2184.38 245.078 2180.98 245.078 M2180.98 241.467 Q2186.53 241.467 2189.7 245.078 Q2192.88 248.689 2192.88 255.078 Q2192.88 261.444 2189.7 265.078 Q2186.53 268.689 2180.98 268.689 Q2175.4 268.689 2172.23 265.078 Q2169.08 261.444 2169.08 255.078 Q2169.08 248.689 2172.23 245.078 Q2175.4 241.467 2180.98 241.467 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2199.94 242.092 L2204.19 242.092 L2204.19 268.018 L2199.94 268.018 L2199.94 242.092 M2199.94 231.999 L2204.19 231.999 L2204.19 237.393 L2199.94 237.393 L2199.94 231.999 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2234.66 252.369 L2234.66 268.018 L2230.4 268.018 L2230.4 252.508 Q2230.4 248.828 2228.96 246.999 Q2227.53 245.17 2224.66 245.17 Q2221.21 245.17 2219.22 247.37 Q2217.23 249.569 2217.23 253.365 L2217.23 268.018 L2212.94 268.018 L2212.94 242.092 L2217.23 242.092 L2217.23 246.12 Q2218.75 243.782 2220.81 242.624 Q2222.9 241.467 2225.61 241.467 Q2230.07 241.467 2232.37 244.245 Q2234.66 246.999 2234.66 252.369 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip010)" d="M2247.37 234.731 L2247.37 242.092 L2256.14 242.092 L2256.14 245.402 L2247.37 245.402 L2247.37 259.476 Q2247.37 262.647 2248.22 263.55 Q2249.1 264.453 2251.76 264.453 L2256.14 264.453 L2256.14 268.018 L2251.76 268.018 Q2246.83 268.018 2244.96 266.189 Q2243.08 264.337 2243.08 259.476 L2243.08 245.402 L2239.96 245.402 L2239.96 242.092 L2243.08 242.092 L2243.08 234.731 L2247.37 234.731 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /></svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA ppersist_js_state·has_pluto_hook_features§cell_id$3663bf80-1a06-11eb-3596-8fbbed28cc38depends_on_disabled_cells§runtime	0published_object_keysdepends_on_skipped_cells§errored$caa98732-19cd-11eb-04ce-2f018275cf01queued¤logsrunning¦outputbody.plot_object! (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA lpersist_js_state·has_pluto_hook_features§cell_id$caa98732-19cd-11eb-04ce-2f018275cf01depends_on_disabled_cells§runtime Նpublished_object_keysdepends_on_skipped_cells§errored$427747d6-1ca1-11eb-28ae-ff50728c84fequeued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA gHmzpersist_js_state·has_pluto_hook_features§cell_id$427747d6-1ca1-11eb-28ae-ff50728c84fedepends_on_disabled_cells§runtime6zpublished_object_keysdepends_on_skipped_cells§errored$052dc502-1c7a-11eb-2316-d3a1eef2af94queued¤logsrunning¦outputbodyٵ<div class="markdown"><p>And we can now use all of Julia&#39;s built in functions to work with a vector of hit/miss results. For example, we can <strong>sort</strong> it:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gD3persist_js_state·has_pluto_hook_features§cell_id$052dc502-1c7a-11eb-2316-d3a1eef2af94depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$3aa539ce-193f-11eb-2a0f-bbc6b83528b7queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA lҰpersist_js_state·has_pluto_hook_features§cell_id$3aa539ce-193f-11eb-2a0f-bbc6b83528b7depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$a45e1012-194d-11eb-3252-bb89daed3c8dqueued¤logsrunning¦outputbodyo<div class="markdown"><p>Great&#33; Next, we will repeat this action to trace the path of a photon. </p>
</div>mimetext/htmlrootassigneelast_run_timestampA gFLpersist_js_state·has_pluto_hook_features§cell_id$a45e1012-194d-11eb-3252-bb89daed3c8ddepends_on_disabled_cells§runtime cpublished_object_keysdepends_on_skipped_cells§errored$e5c0e960-19cc-11eb-107d-39b397a783abqueued¤logsrunning¦outputbodyprefixSphereelementscenterprefixFloat64elements7.0text/plain-6.0text/plaintypeArrayprefix_shortobjectid9893aac72820548c!application/vnd.pluto.tree+objectradius2text/plainior1.5text/plaintypestructprefix_shortSphereobjectid5f0bf3c823877cecmime!application/vnd.pluto.tree+objectrootassigneeexample_spherelast_run_timestampA o:?persist_js_state·has_pluto_hook_features§cell_id$e5c0e960-19cc-11eb-107d-39b397a783abdepends_on_disabled_cells§runtime;published_object_keysdepends_on_skipped_cells§errored$92290e54-1940-11eb-1a24-5d1eaee9f6caqueued¤logsrunning¦outputbodyS<div class="markdown"><h2><strong>Exercise 1:</strong> <em>Walls</em></h2>
<p>As discussed the lecture, event-driven simulations are the traditional method used for raytracing. Here, we look for any objects in our path and <em>analytically</em> determine how far away they are. From there, we take one big timestep all the way to the surface boundary, calculate refraction or reflection to see what direction we are moving in, and then seek out any other object we could potentially run into.</p>
<p>So let&#39;s start simple with determining when a ray of light could intersect with a wall.</p>
<h4>Exercise 1.1 - <em>what is a wall?</em></h4>
<p>To start, let&#39;s create the concept of a wall. For our purposes, walls will be infinitely long, so we only need to create an object that has a position and a normal vector at that position:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gB>ٰpersist_js_state·has_pluto_hook_features§cell_id$92290e54-1940-11eb-1a24-5d1eaee9f6cadepends_on_disabled_cells§runtime [published_object_keysdepends_on_skipped_cells§errored$1e01c912-19c4-11eb-269a-9796cccdf274queued¤logsrunning¦outputbodyB<script>
const warning = html`
<h2 style="color: #800">Oopsie! You need to update Pluto to the latest version</h2>
<p>Close Pluto, go to the REPL, and type:
<pre><code>julia> import Pkg
julia> Pkg.update("Pluto")
</code></pre>
`

const super_old = window.version_info == null || window.version_info.pluto == null
if(super_old) {
	return warning
}
const version_str = window.version_info.pluto.substring(1)
const numbers = version_str.split(".").map(Number)
console.log(numbers)

if(numbers[0] > 0 || numbers[1] > 12 || numbers[2] > 1) {
	
} else {
	return warning
}

</script>

mimetext/htmlrootassigneelast_run_timestampA gA.persist_js_state·has_pluto_hook_features§cell_id$1e01c912-19c4-11eb-269a-9796cccdf274depends_on_disabled_cells§runtime ۵published_object_keysdepends_on_skipped_cells§errored$1e2cd0b0-19c4-11eb-3583-0b82092139aaqueued¤logsrunning¦outputbodyT<div class="markdown"><p><em>Let&#39;s create a package environment:</em></p>
</div>mimetext/htmlrootassigneelast_run_timestampA gBpersist_js_state·has_pluto_hook_features§cell_id$1e2cd0b0-19c4-11eb-3583-0b82092139aadepends_on_disabled_cells§runtime F|published_object_keysdepends_on_skipped_cells§errored$6cf7df1a-1c7a-11eb-230b-df1333f191c7queued¤logsrunning¦outputbody<div class="markdown"><blockquote>
<p>Note that we did not define the <code>sort</code> and <code>minimum</code> methods ourselves&#33; We only added methods for <code>Base.isless</code>.</p>
</blockquote>
<p>By taking the minimum, we have found our closest hit&#33; Let&#39;s turn this into a function. </p>
<p>👉 Write a function <code>closest_hit</code> that takes a <code>photon</code> and a vector of objects. Calculate the vector of <code>Intersection</code>s/<code>Miss</code>es, and return the <code>minimum</code>.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gDApersist_js_state·has_pluto_hook_features§cell_id$6cf7df1a-1c7a-11eb-230b-df1333f191c7depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$5a9d00f6-1ac3-11eb-01fb-53c35796e766queued¤logsrunning¦outputbodyprefixMisselementstypestructprefix_shortMissobjectidffffffffcd54a1cemime!application/vnd.pluto.tree+objectrootassigneea_misslast_run_timestampA l!̯persist_js_state·has_pluto_hook_features§cell_id$5a9d00f6-1ac3-11eb-01fb-53c35796e766depends_on_disabled_cells§runtime.published_object_keysdepends_on_skipped_cells§errored$ec275590-19c3-11eb-23d0-cb3d9f62ba92queued¤logsrunning¦outputbodyn<div class="markdown"><h2>Function library</h2>
<p>Just some helper functions used in the notebook.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gHpersist_js_state·has_pluto_hook_features§cell_id$ec275590-19c3-11eb-23d0-cb3d9f62ba92depends_on_disabled_cells§runtime w̵published_object_keysdepends_on_skipped_cells§errored$0e9a240c-1ac5-11eb-1a7e-b3c43c459484queued¤logsrunning¦outputbodyف<div class="markdown"><div class="admonition correct"><p class="admonition-title">Got it!</p><p>Well done&#33;</p>

</div>
</div>mimetext/htmlrootassigneelast_run_timestampA q,persist_js_state·has_pluto_hook_features§cell_id$0e9a240c-1ac5-11eb-1a7e-b3c43c459484depends_on_disabled_cells§runtimeGpublished_object_keysdepends_on_skipped_cells§errored$e9c6a0b8-1ad0-11eb-1606-0319caf0948aqueued¤logsrunning¦outputbodyk<div class="markdown"><p><br><br><br><br></p>
<h2><strong>Exercise 2:</strong> <em>Mirrors</em></h2>
</div>mimetext/htmlrootassigneelast_run_timestampA gEYpersist_js_state·has_pluto_hook_features§cell_id$e9c6a0b8-1ad0-11eb-1606-0319caf0948adepends_on_disabled_cells§runtime 9}published_object_keysdepends_on_skipped_cells§errored$54b81de0-193f-11eb-004d-f90ec43588f8queued¤logsrunning¦outputbodyv<div class="markdown"><p>We need a helper functions to find the normal of the sphere&#39;s surface at any position. Remember that the normal will always be pointing perpendicularly from the surface of the sphere. This means that no matter what point you are at, the normal will just be a normalized vector of your current location minus the sphere&#39;s position:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gH,persist_js_state·has_pluto_hook_features§cell_id$54b81de0-193f-11eb-004d-f90ec43588f8depends_on_disabled_cells§runtime )published_object_keysdepends_on_skipped_cells§errored$7ba5dda0-1ad1-11eb-1c4e-2391c11f54b3queued¤logsrunning¦outputbodyB<div class="markdown"><h4>Exercise 2.3 - <em>accumulate</em></h4>
<p>👉 Write a function <code>trace</code> that takes an initial <code>Photon</code>, a vector of <code>Object</code>s and <code>N</code>, the number of steps to make. Return a vector of <code>Photon</code>s. Try to use <code>accumulate</code>.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gFfpersist_js_state·has_pluto_hook_features§cell_id$7ba5dda0-1ad1-11eb-1c4e-2391c11f54b3depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$1ee0787e-1a08-11eb-233b-43a654f70117queued¤logsrunning¦outputbodyIi<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600">
<defs>
  <clipPath id="clip210">
    <rect x="0" y="0" width="2400" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip210)" d="M0 1600 L2400 1600 L2400 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip211">
    <rect x="480" y="0" width="1681" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip210)" d="M546.209 1486.45 L1985.41 1486.45 L1985.41 47.2441 L546.209 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip212">
    <rect x="546" y="47" width="1440" height="1440"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip212)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="611.628,1486.45 611.628,47.2441 "/>
<polyline clip-path="url(#clip212)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="938.72,1486.45 938.72,47.2441 "/>
<polyline clip-path="url(#clip212)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1265.81,1486.45 1265.81,47.2441 "/>
<polyline clip-path="url(#clip212)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1592.9,1486.45 1592.9,47.2441 "/>
<polyline clip-path="url(#clip212)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1919.99,1486.45 1919.99,47.2441 "/>
<polyline clip-path="url(#clip212)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,1421.03 1985.41,1421.03 "/>
<polyline clip-path="url(#clip212)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,1093.94 1985.41,1093.94 "/>
<polyline clip-path="url(#clip212)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,766.846 1985.41,766.846 "/>
<polyline clip-path="url(#clip212)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,439.754 1985.41,439.754 "/>
<polyline clip-path="url(#clip212)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="546.209,112.662 1985.41,112.662 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1486.45 1985.41,1486.45 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="611.628,1486.45 611.628,1467.55 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="938.72,1486.45 938.72,1467.55 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1265.81,1486.45 1265.81,1467.55 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1592.9,1486.45 1592.9,1467.55 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1919.99,1486.45 1919.99,1467.55 "/>
<path clip-path="url(#clip210)" d="M565.69 1532.02 L595.366 1532.02 L595.366 1535.95 L565.69 1535.95 L565.69 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M606.269 1544.91 L613.908 1544.91 L613.908 1518.55 L605.598 1520.21 L605.598 1515.95 L613.862 1514.29 L618.537 1514.29 L618.537 1544.91 L626.176 1544.91 L626.176 1548.85 L606.269 1548.85 L606.269 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M645.621 1517.37 Q642.01 1517.37 640.181 1520.93 Q638.375 1524.47 638.375 1531.6 Q638.375 1538.71 640.181 1542.27 Q642.01 1545.82 645.621 1545.82 Q649.255 1545.82 651.06 1542.27 Q652.889 1538.71 652.889 1531.6 Q652.889 1524.47 651.06 1520.93 Q649.255 1517.37 645.621 1517.37 M645.621 1513.66 Q651.431 1513.66 654.486 1518.27 Q657.565 1522.85 657.565 1531.6 Q657.565 1540.33 654.486 1544.94 Q651.431 1549.52 645.621 1549.52 Q639.81 1549.52 636.732 1544.94 Q633.676 1540.33 633.676 1531.6 Q633.676 1522.85 636.732 1518.27 Q639.81 1513.66 645.621 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M908.361 1532.02 L938.037 1532.02 L938.037 1535.95 L908.361 1535.95 L908.361 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M948.175 1514.29 L966.532 1514.29 L966.532 1518.22 L952.458 1518.22 L952.458 1526.7 Q953.476 1526.35 954.495 1526.19 Q955.513 1526 956.532 1526 Q962.319 1526 965.699 1529.17 Q969.078 1532.34 969.078 1537.76 Q969.078 1543.34 965.606 1546.44 Q962.134 1549.52 955.814 1549.52 Q953.638 1549.52 951.37 1549.15 Q949.125 1548.78 946.717 1548.04 L946.717 1543.34 Q948.8 1544.47 951.023 1545.03 Q953.245 1545.58 955.722 1545.58 Q959.726 1545.58 962.064 1543.48 Q964.402 1541.37 964.402 1537.76 Q964.402 1534.15 962.064 1532.04 Q959.726 1529.94 955.722 1529.94 Q953.847 1529.94 951.972 1530.35 Q950.12 1530.77 948.175 1531.65 L948.175 1514.29 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M1265.81 1517.37 Q1262.2 1517.37 1260.37 1520.93 Q1258.57 1524.47 1258.57 1531.6 Q1258.57 1538.71 1260.37 1542.27 Q1262.2 1545.82 1265.81 1545.82 Q1269.45 1545.82 1271.25 1542.27 Q1273.08 1538.71 1273.08 1531.6 Q1273.08 1524.47 1271.25 1520.93 Q1269.45 1517.37 1265.81 1517.37 M1265.81 1513.66 Q1271.62 1513.66 1274.68 1518.27 Q1277.76 1522.85 1277.76 1531.6 Q1277.76 1540.33 1274.68 1544.94 Q1271.62 1549.52 1265.81 1549.52 Q1260 1549.52 1256.92 1544.94 Q1253.87 1540.33 1253.87 1531.6 Q1253.87 1522.85 1256.92 1518.27 Q1260 1513.66 1265.81 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M1583.18 1514.29 L1601.54 1514.29 L1601.54 1518.22 L1587.46 1518.22 L1587.46 1526.7 Q1588.48 1526.35 1589.5 1526.19 Q1590.52 1526 1591.54 1526 Q1597.32 1526 1600.7 1529.17 Q1604.08 1532.34 1604.08 1537.76 Q1604.08 1543.34 1600.61 1546.44 Q1597.14 1549.52 1590.82 1549.52 Q1588.64 1549.52 1586.38 1549.15 Q1584.13 1548.78 1581.72 1548.04 L1581.72 1543.34 Q1583.81 1544.47 1586.03 1545.03 Q1588.25 1545.58 1590.73 1545.58 Q1594.73 1545.58 1597.07 1543.48 Q1599.41 1541.37 1599.41 1537.76 Q1599.41 1534.15 1597.07 1532.04 Q1594.73 1529.94 1590.73 1529.94 Q1588.85 1529.94 1586.98 1530.35 Q1585.13 1530.77 1583.18 1531.65 L1583.18 1514.29 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M1894.68 1544.91 L1902.32 1544.91 L1902.32 1518.55 L1894.01 1520.21 L1894.01 1515.95 L1902.27 1514.29 L1906.95 1514.29 L1906.95 1544.91 L1914.59 1544.91 L1914.59 1548.85 L1894.68 1548.85 L1894.68 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M1934.03 1517.37 Q1930.42 1517.37 1928.59 1520.93 Q1926.79 1524.47 1926.79 1531.6 Q1926.79 1538.71 1928.59 1542.27 Q1930.42 1545.82 1934.03 1545.82 Q1937.67 1545.82 1939.47 1542.27 Q1941.3 1538.71 1941.3 1531.6 Q1941.3 1524.47 1939.47 1520.93 Q1937.67 1517.37 1934.03 1517.37 M1934.03 1513.66 Q1939.84 1513.66 1942.9 1518.27 Q1945.98 1522.85 1945.98 1531.6 Q1945.98 1540.33 1942.9 1544.94 Q1939.84 1549.52 1934.03 1549.52 Q1928.22 1549.52 1925.15 1544.94 Q1922.09 1540.33 1922.09 1531.6 Q1922.09 1522.85 1925.15 1518.27 Q1928.22 1513.66 1934.03 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1486.45 546.209,47.2441 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1421.03 558.72,1421.03 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,1093.94 558.72,1093.94 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,766.846 558.72,766.846 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,439.754 558.72,439.754 "/>
<polyline clip-path="url(#clip210)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="546.209,112.662 558.72,112.662 "/>
<path clip-path="url(#clip210)" d="M418.335 1421.48 L448.011 1421.48 L448.011 1425.42 L418.335 1425.42 L418.335 1421.48 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M458.913 1434.37 L466.552 1434.37 L466.552 1408.01 L458.242 1409.68 L458.242 1405.42 L466.506 1403.75 L471.182 1403.75 L471.182 1434.37 L478.821 1434.37 L478.821 1438.31 L458.913 1438.31 L458.913 1434.37 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M498.265 1406.83 Q494.654 1406.83 492.825 1410.39 Q491.02 1413.93 491.02 1421.06 Q491.02 1428.17 492.825 1431.74 Q494.654 1435.28 498.265 1435.28 Q501.899 1435.28 503.705 1431.74 Q505.533 1428.17 505.533 1421.06 Q505.533 1413.93 503.705 1410.39 Q501.899 1406.83 498.265 1406.83 M498.265 1403.12 Q504.075 1403.12 507.131 1407.73 Q510.209 1412.31 510.209 1421.06 Q510.209 1429.79 507.131 1434.4 Q504.075 1438.98 498.265 1438.98 Q492.455 1438.98 489.376 1434.4 Q486.321 1429.79 486.321 1421.06 Q486.321 1412.31 489.376 1407.73 Q492.455 1403.12 498.265 1403.12 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M449.492 1094.39 L479.168 1094.39 L479.168 1098.32 L449.492 1098.32 L449.492 1094.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M489.307 1076.66 L507.663 1076.66 L507.663 1080.59 L493.589 1080.59 L493.589 1089.07 Q494.608 1088.72 495.626 1088.56 Q496.645 1088.37 497.663 1088.37 Q503.45 1088.37 506.83 1091.54 Q510.209 1094.71 510.209 1100.13 Q510.209 1105.71 506.737 1108.81 Q503.265 1111.89 496.946 1111.89 Q494.77 1111.89 492.501 1111.52 Q490.256 1111.15 487.848 1110.41 L487.848 1105.71 Q489.932 1106.84 492.154 1107.4 Q494.376 1107.95 496.853 1107.95 Q500.858 1107.95 503.196 1105.85 Q505.533 1103.74 505.533 1100.13 Q505.533 1096.52 503.196 1094.41 Q500.858 1092.31 496.853 1092.31 Q494.978 1092.31 493.103 1092.72 Q491.251 1093.14 489.307 1094.02 L489.307 1076.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M498.265 752.645 Q494.654 752.645 492.825 756.209 Q491.02 759.751 491.02 766.881 Q491.02 773.987 492.825 777.552 Q494.654 781.094 498.265 781.094 Q501.899 781.094 503.705 777.552 Q505.533 773.987 505.533 766.881 Q505.533 759.751 503.705 756.209 Q501.899 752.645 498.265 752.645 M498.265 748.941 Q504.075 748.941 507.131 753.547 Q510.209 758.131 510.209 766.881 Q510.209 775.608 507.131 780.214 Q504.075 784.797 498.265 784.797 Q492.455 784.797 489.376 780.214 Q486.321 775.608 486.321 766.881 Q486.321 758.131 489.376 753.547 Q492.455 748.941 498.265 748.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M489.307 422.474 L507.663 422.474 L507.663 426.409 L493.589 426.409 L493.589 434.882 Q494.608 434.534 495.626 434.372 Q496.645 434.187 497.663 434.187 Q503.45 434.187 506.83 437.358 Q510.209 440.53 510.209 445.946 Q510.209 451.525 506.737 454.627 Q503.265 457.706 496.946 457.706 Q494.77 457.706 492.501 457.335 Q490.256 456.965 487.848 456.224 L487.848 451.525 Q489.932 452.659 492.154 453.215 Q494.376 453.77 496.853 453.77 Q500.858 453.77 503.196 451.664 Q505.533 449.557 505.533 445.946 Q505.533 442.335 503.196 440.229 Q500.858 438.122 496.853 438.122 Q494.978 438.122 493.103 438.539 Q491.251 438.956 489.307 439.835 L489.307 422.474 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M458.913 126.007 L466.552 126.007 L466.552 99.6417 L458.242 101.308 L458.242 97.0491 L466.506 95.3824 L471.182 95.3824 L471.182 126.007 L478.821 126.007 L478.821 129.942 L458.913 129.942 L458.913 126.007 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip210)" d="M498.265 98.4611 Q494.654 98.4611 492.825 102.026 Q491.02 105.568 491.02 112.697 Q491.02 119.804 492.825 123.368 Q494.654 126.91 498.265 126.91 Q501.899 126.91 503.705 123.368 Q505.533 119.804 505.533 112.697 Q505.533 105.568 503.705 102.026 Q501.899 98.4611 498.265 98.4611 M498.265 94.7575 Q504.075 94.7575 507.131 99.3639 Q510.209 103.947 510.209 112.697 Q510.209 121.424 507.131 126.03 Q504.075 130.614 498.265 130.614 Q492.455 130.614 489.376 126.03 Q486.321 121.424 486.321 112.697 Q486.321 103.947 489.376 99.3639 Q492.455 94.7575 498.265 94.7575 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip212)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1919.99,-541.521 1919.99,2075.21 "/>
<polyline clip-path="url(#clip212)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="611.628,2075.21 611.628,-541.521 "/>
<polyline clip-path="url(#clip212)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2574.18,1421.03 -42.5558,1421.03 "/>
<polyline clip-path="url(#clip212)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="-42.5558,112.662 2574.18,112.662 "/>
<polyline clip-path="url(#clip212)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2202.9,-408.962 1375.42,2073.49 "/>
<polyline clip-path="url(#clip212)" style="stroke:#ffc0cb; stroke-linecap:round; stroke-linejoin:round; stroke-width:20; stroke-opacity:1; fill:none" points="1462.07,766.846 1671.41,1185.52 1200.39,1421.03 611.628,1126.65 1906.91,479.005 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1462.07,766.846 1520.58,883.87 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1520.58,843.621 1520.58,883.87 1488.38,859.72 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1520.58,883.87 1462.07,766.846 "/>
<circle clip-path="url(#clip212)" cx="1462.07" cy="766.846" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1671.41,1185.52 1554.38,1244.04 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1594.63,1244.04 1554.38,1244.04 1578.53,1211.84 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1554.38,1244.04 1671.41,1185.52 "/>
<circle clip-path="url(#clip212)" cx="1671.41" cy="1185.52" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1200.39,1421.03 1083.37,1362.52 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1107.52,1394.72 1083.37,1362.52 1123.62,1362.52 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1083.37,1362.52 1200.39,1421.03 "/>
<circle clip-path="url(#clip212)" cx="1200.39" cy="1421.03" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="611.628,1126.65 728.652,1068.13 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="688.402,1068.13 728.652,1068.13 704.502,1100.33 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="728.652,1068.13 611.628,1126.65 "/>
<circle clip-path="url(#clip212)" cx="611.628" cy="1126.65" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1906.91,479.005 1848.4,361.981 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1848.4,402.231 1848.4,361.981 1880.6,386.131 "/>
<polyline clip-path="url(#clip212)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1848.4,361.981 1906.91,479.005 "/>
<circle clip-path="url(#clip212)" cx="1906.91" cy="479.005" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
</svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA p37persist_js_state·has_pluto_hook_features§cell_id$1ee0787e-1a08-11eb-233b-43a654f70117depends_on_disabled_cells§runtimeѵpublished_object_keysdepends_on_skipped_cells§errored$ec4abc12-19c3-11eb-1ca4-b5e9d3cd100bqueued¤logsrunning¦outputbody/still_missing (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA q_fpersist_js_state·has_pluto_hook_features§cell_id$ec4abc12-19c3-11eb-1ca4-b5e9d3cd100bdepends_on_disabled_cells§runtime npublished_object_keysdepends_on_skipped_cells§errored$eff9329e-1a05-11eb-261f-734127d36750queued¤logsrunning¦outputbody+plot_scene (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA ljpersist_js_state·has_pluto_hook_features§cell_id$eff9329e-1a05-11eb-261f-734127d36750depends_on_disabled_cells§runtime #Pnpublished_object_keysdepends_on_skipped_cells§errored$0906b340-19d3-11eb-112c-e568f69deb5dqueued¤logsrunning¦outputbodyprefixWallelementspositionprefixFloat64elements8.0text/plain-1.0text/plaintypeArrayprefix_shortobjectidcb5693189533ec6e!application/vnd.pluto.tree+objectnormalprefixFloat64elements-0.948683text/plain0.316228text/plaintypeArrayprefix_shortobjectid1ec3964025f3aa0!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidcfcbe35619eca23cmime!application/vnd.pluto.tree+objectrootassigneetest_walllast_run_timestampA kQ@persist_js_state·has_pluto_hook_features§cell_id$0906b340-19d3-11eb-112c-e568f69deb5ddepends_on_disabled_cells§runtimeHRpublished_object_keysdepends_on_skipped_cells§errored$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5queued¤logsrunning¦outputbodyȝ~<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600">
<defs>
  <clipPath id="clip090">
    <rect x="0" y="0" width="2400" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip090)" d="M0 1600 L2400 1600 L2400 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip091">
    <rect x="480" y="0" width="1681" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip090)" d="M178.867 1486.45 L2352.76 1486.45 L2352.76 47.2441 L178.867 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip092">
    <rect x="178" y="47" width="2175" height="1440"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="247.507,1486.45 247.507,47.2441 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="586.942,1486.45 586.942,47.2441 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="926.376,1486.45 926.376,47.2441 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1265.81,1486.45 1265.81,47.2441 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1605.25,1486.45 1605.25,47.2441 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1944.68,1486.45 1944.68,47.2441 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2284.12,1486.45 2284.12,47.2441 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,1445.72 2352.76,1445.72 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,1106.28 2352.76,1106.28 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,766.846 2352.76,766.846 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,427.411 2352.76,427.411 "/>
<polyline clip-path="url(#clip092)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,87.9763 2352.76,87.9763 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1486.45 2352.76,1486.45 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="247.507,1486.45 247.507,1467.55 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="586.942,1486.45 586.942,1467.55 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="926.376,1486.45 926.376,1467.55 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1265.81,1486.45 1265.81,1467.55 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1605.25,1486.45 1605.25,1467.55 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1944.68,1486.45 1944.68,1467.55 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2284.12,1486.45 2284.12,1467.55 "/>
<path clip-path="url(#clip090)" d="M201.569 1532.02 L231.245 1532.02 L231.245 1535.95 L201.569 1535.95 L201.569 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M255.504 1530.21 Q258.861 1530.93 260.736 1533.2 Q262.634 1535.47 262.634 1538.8 Q262.634 1543.92 259.115 1546.72 Q255.597 1549.52 249.115 1549.52 Q246.94 1549.52 244.625 1549.08 Q242.333 1548.66 239.879 1547.81 L239.879 1543.29 Q241.824 1544.43 244.139 1545.01 Q246.453 1545.58 248.977 1545.58 Q253.375 1545.58 255.666 1543.85 Q257.981 1542.11 257.981 1538.8 Q257.981 1535.75 255.828 1534.03 Q253.699 1532.3 249.879 1532.3 L245.852 1532.3 L245.852 1528.45 L250.065 1528.45 Q253.514 1528.45 255.342 1527.09 Q257.171 1525.7 257.171 1523.11 Q257.171 1520.45 255.273 1519.03 Q253.398 1517.6 249.879 1517.6 Q247.958 1517.6 245.759 1518.01 Q243.56 1518.43 240.921 1519.31 L240.921 1515.14 Q243.583 1514.4 245.898 1514.03 Q248.236 1513.66 250.296 1513.66 Q255.62 1513.66 258.722 1516.09 Q261.824 1518.5 261.824 1522.62 Q261.824 1525.49 260.18 1527.48 Q258.537 1529.45 255.504 1530.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M281.5 1517.37 Q277.888 1517.37 276.06 1520.93 Q274.254 1524.47 274.254 1531.6 Q274.254 1538.71 276.06 1542.27 Q277.888 1545.82 281.5 1545.82 Q285.134 1545.82 286.939 1542.27 Q288.768 1538.71 288.768 1531.6 Q288.768 1524.47 286.939 1520.93 Q285.134 1517.37 281.5 1517.37 M281.5 1513.66 Q287.31 1513.66 290.365 1518.27 Q293.444 1522.85 293.444 1531.6 Q293.444 1540.33 290.365 1544.94 Q287.31 1549.52 281.5 1549.52 Q275.689 1549.52 272.611 1544.94 Q269.555 1540.33 269.555 1531.6 Q269.555 1522.85 272.611 1518.27 Q275.689 1513.66 281.5 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M541.004 1532.02 L570.68 1532.02 L570.68 1535.95 L541.004 1535.95 L541.004 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M584.8 1544.91 L601.12 1544.91 L601.12 1548.85 L579.175 1548.85 L579.175 1544.91 Q581.837 1542.16 586.421 1537.53 Q591.027 1532.88 592.208 1531.53 Q594.453 1529.01 595.333 1527.27 Q596.235 1525.51 596.235 1523.82 Q596.235 1521.07 594.291 1519.33 Q592.37 1517.6 589.268 1517.6 Q587.069 1517.6 584.615 1518.36 Q582.185 1519.13 579.407 1520.68 L579.407 1515.95 Q582.231 1514.82 584.685 1514.24 Q587.138 1513.66 589.175 1513.66 Q594.546 1513.66 597.74 1516.35 Q600.935 1519.03 600.935 1523.52 Q600.935 1525.65 600.124 1527.57 Q599.337 1529.47 597.231 1532.07 Q596.652 1532.74 593.55 1535.95 Q590.448 1539.15 584.8 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M620.934 1517.37 Q617.323 1517.37 615.495 1520.93 Q613.689 1524.47 613.689 1531.6 Q613.689 1538.71 615.495 1542.27 Q617.323 1545.82 620.934 1545.82 Q624.569 1545.82 626.374 1542.27 Q628.203 1538.71 628.203 1531.6 Q628.203 1524.47 626.374 1520.93 Q624.569 1517.37 620.934 1517.37 M620.934 1513.66 Q626.745 1513.66 629.8 1518.27 Q632.879 1522.85 632.879 1531.6 Q632.879 1540.33 629.8 1544.94 Q626.745 1549.52 620.934 1549.52 Q615.124 1549.52 612.046 1544.94 Q608.99 1540.33 608.99 1531.6 Q608.99 1522.85 612.046 1518.27 Q615.124 1513.66 620.934 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M880.439 1532.02 L910.115 1532.02 L910.115 1535.95 L880.439 1535.95 L880.439 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M921.018 1544.91 L928.656 1544.91 L928.656 1518.55 L920.346 1520.21 L920.346 1515.95 L928.61 1514.29 L933.286 1514.29 L933.286 1544.91 L940.925 1544.91 L940.925 1548.85 L921.018 1548.85 L921.018 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M960.369 1517.37 Q956.758 1517.37 954.93 1520.93 Q953.124 1524.47 953.124 1531.6 Q953.124 1538.71 954.93 1542.27 Q956.758 1545.82 960.369 1545.82 Q964.004 1545.82 965.809 1542.27 Q967.638 1538.71 967.638 1531.6 Q967.638 1524.47 965.809 1520.93 Q964.004 1517.37 960.369 1517.37 M960.369 1513.66 Q966.179 1513.66 969.235 1518.27 Q972.314 1522.85 972.314 1531.6 Q972.314 1540.33 969.235 1544.94 Q966.179 1549.52 960.369 1549.52 Q954.559 1549.52 951.48 1544.94 Q948.425 1540.33 948.425 1531.6 Q948.425 1522.85 951.48 1518.27 Q954.559 1513.66 960.369 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M1265.81 1517.37 Q1262.2 1517.37 1260.37 1520.93 Q1258.57 1524.47 1258.57 1531.6 Q1258.57 1538.71 1260.37 1542.27 Q1262.2 1545.82 1265.81 1545.82 Q1269.45 1545.82 1271.25 1542.27 Q1273.08 1538.71 1273.08 1531.6 Q1273.08 1524.47 1271.25 1520.93 Q1269.45 1517.37 1265.81 1517.37 M1265.81 1513.66 Q1271.62 1513.66 1274.68 1518.27 Q1277.76 1522.85 1277.76 1531.6 Q1277.76 1540.33 1274.68 1544.94 Q1271.62 1549.52 1265.81 1549.52 Q1260 1549.52 1256.92 1544.94 Q1253.87 1540.33 1253.87 1531.6 Q1253.87 1522.85 1256.92 1518.27 Q1260 1513.66 1265.81 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M1579.93 1544.91 L1587.57 1544.91 L1587.57 1518.55 L1579.26 1520.21 L1579.26 1515.95 L1587.53 1514.29 L1592.2 1514.29 L1592.2 1544.91 L1599.84 1544.91 L1599.84 1548.85 L1579.93 1548.85 L1579.93 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M1619.29 1517.37 Q1615.67 1517.37 1613.85 1520.93 Q1612.04 1524.47 1612.04 1531.6 Q1612.04 1538.71 1613.85 1542.27 Q1615.67 1545.82 1619.29 1545.82 Q1622.92 1545.82 1624.73 1542.27 Q1626.55 1538.71 1626.55 1531.6 Q1626.55 1524.47 1624.73 1520.93 Q1622.92 1517.37 1619.29 1517.37 M1619.29 1513.66 Q1625.1 1513.66 1628.15 1518.27 Q1631.23 1522.85 1631.23 1531.6 Q1631.23 1540.33 1628.15 1544.94 Q1625.1 1549.52 1619.29 1549.52 Q1613.48 1549.52 1610.4 1544.94 Q1607.34 1540.33 1607.34 1531.6 Q1607.34 1522.85 1610.4 1518.27 Q1613.48 1513.66 1619.29 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M1923.45 1544.91 L1939.77 1544.91 L1939.77 1548.85 L1917.83 1548.85 L1917.83 1544.91 Q1920.49 1542.16 1925.07 1537.53 Q1929.68 1532.88 1930.86 1531.53 Q1933.11 1529.01 1933.99 1527.27 Q1934.89 1525.51 1934.89 1523.82 Q1934.89 1521.07 1932.94 1519.33 Q1931.02 1517.6 1927.92 1517.6 Q1925.72 1517.6 1923.27 1518.36 Q1920.84 1519.13 1918.06 1520.68 L1918.06 1515.95 Q1920.88 1514.82 1923.34 1514.24 Q1925.79 1513.66 1927.83 1513.66 Q1933.2 1513.66 1936.39 1516.35 Q1939.59 1519.03 1939.59 1523.52 Q1939.59 1525.65 1938.78 1527.57 Q1937.99 1529.47 1935.88 1532.07 Q1935.31 1532.74 1932.2 1535.95 Q1929.1 1539.15 1923.45 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M1959.59 1517.37 Q1955.98 1517.37 1954.15 1520.93 Q1952.34 1524.47 1952.34 1531.6 Q1952.34 1538.71 1954.15 1542.27 Q1955.98 1545.82 1959.59 1545.82 Q1963.22 1545.82 1965.03 1542.27 Q1966.86 1538.71 1966.86 1531.6 Q1966.86 1524.47 1965.03 1520.93 Q1963.22 1517.37 1959.59 1517.37 M1959.59 1513.66 Q1965.4 1513.66 1968.45 1518.27 Q1971.53 1522.85 1971.53 1531.6 Q1971.53 1540.33 1968.45 1544.94 Q1965.4 1549.52 1959.59 1549.52 Q1953.78 1549.52 1950.7 1544.94 Q1947.64 1540.33 1947.64 1531.6 Q1947.64 1522.85 1950.7 1518.27 Q1953.78 1513.66 1959.59 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2272.96 1530.21 Q2276.31 1530.93 2278.19 1533.2 Q2280.09 1535.47 2280.09 1538.8 Q2280.09 1543.92 2276.57 1546.72 Q2273.05 1549.52 2266.57 1549.52 Q2264.39 1549.52 2262.08 1549.08 Q2259.79 1548.66 2257.33 1547.81 L2257.33 1543.29 Q2259.28 1544.43 2261.59 1545.01 Q2263.91 1545.58 2266.43 1545.58 Q2270.83 1545.58 2273.12 1543.85 Q2275.44 1542.11 2275.44 1538.8 Q2275.44 1535.75 2273.28 1534.03 Q2271.15 1532.3 2267.33 1532.3 L2263.31 1532.3 L2263.31 1528.45 L2267.52 1528.45 Q2270.97 1528.45 2272.8 1527.09 Q2274.63 1525.7 2274.63 1523.11 Q2274.63 1520.45 2272.73 1519.03 Q2270.85 1517.6 2267.33 1517.6 Q2265.41 1517.6 2263.21 1518.01 Q2261.01 1518.43 2258.38 1519.31 L2258.38 1515.14 Q2261.04 1514.4 2263.35 1514.03 Q2265.69 1513.66 2267.75 1513.66 Q2273.07 1513.66 2276.18 1516.09 Q2279.28 1518.5 2279.28 1522.62 Q2279.28 1525.49 2277.63 1527.48 Q2275.99 1529.45 2272.96 1530.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2298.95 1517.37 Q2295.34 1517.37 2293.51 1520.93 Q2291.71 1524.47 2291.71 1531.6 Q2291.71 1538.71 2293.51 1542.27 Q2295.34 1545.82 2298.95 1545.82 Q2302.59 1545.82 2304.39 1542.27 Q2306.22 1538.71 2306.22 1531.6 Q2306.22 1524.47 2304.39 1520.93 Q2302.59 1517.37 2298.95 1517.37 M2298.95 1513.66 Q2304.76 1513.66 2307.82 1518.27 Q2310.9 1522.85 2310.9 1531.6 Q2310.9 1540.33 2307.82 1544.94 Q2304.76 1549.52 2298.95 1549.52 Q2293.14 1549.52 2290.06 1544.94 Q2287.01 1540.33 2287.01 1531.6 Q2287.01 1522.85 2290.06 1518.27 Q2293.14 1513.66 2298.95 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1486.45 178.867,47.2441 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1445.72 197.764,1445.72 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1106.28 197.764,1106.28 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,766.846 197.764,766.846 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,427.411 197.764,427.411 "/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,87.9763 197.764,87.9763 "/>
<path clip-path="url(#clip090)" d="M50.9921 1446.17 L80.6679 1446.17 L80.6679 1450.1 L50.9921 1450.1 L50.9921 1446.17 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M94.7882 1459.06 L111.108 1459.06 L111.108 1463 L89.1632 1463 L89.1632 1459.06 Q91.8252 1456.31 96.4085 1451.68 Q101.015 1447.02 102.196 1445.68 Q104.441 1443.16 105.321 1441.42 Q106.223 1439.66 106.223 1437.97 Q106.223 1435.22 104.279 1433.48 Q102.358 1431.75 99.2558 1431.75 Q97.0567 1431.75 94.603 1432.51 Q92.1725 1433.27 89.3947 1434.82 L89.3947 1430.1 Q92.2188 1428.97 94.6724 1428.39 Q97.1261 1427.81 99.1632 1427.81 Q104.534 1427.81 107.728 1430.5 Q110.922 1433.18 110.922 1437.67 Q110.922 1439.8 110.112 1441.72 Q109.325 1443.62 107.219 1446.21 Q106.64 1446.88 103.538 1450.1 Q100.436 1453.3 94.7882 1459.06 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M130.922 1431.51 Q127.311 1431.51 125.482 1435.08 Q123.677 1438.62 123.677 1445.75 Q123.677 1452.86 125.482 1456.42 Q127.311 1459.96 130.922 1459.96 Q134.556 1459.96 136.362 1456.42 Q138.191 1452.86 138.191 1445.75 Q138.191 1438.62 136.362 1435.08 Q134.556 1431.51 130.922 1431.51 M130.922 1427.81 Q136.732 1427.81 139.788 1432.42 Q142.867 1437 142.867 1445.75 Q142.867 1454.48 139.788 1459.08 Q136.732 1463.67 130.922 1463.67 Q125.112 1463.67 122.033 1459.08 Q118.978 1454.48 118.978 1445.75 Q118.978 1437 122.033 1432.42 Q125.112 1427.81 130.922 1427.81 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M50.9921 1106.73 L80.6679 1106.73 L80.6679 1110.67 L50.9921 1110.67 L50.9921 1106.73 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M91.5706 1119.63 L99.2095 1119.63 L99.2095 1093.26 L90.8993 1094.93 L90.8993 1090.67 L99.1632 1089 L103.839 1089 L103.839 1119.63 L111.478 1119.63 L111.478 1123.56 L91.5706 1123.56 L91.5706 1119.63 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M130.922 1092.08 Q127.311 1092.08 125.482 1095.64 Q123.677 1099.19 123.677 1106.32 Q123.677 1113.42 125.482 1116.99 Q127.311 1120.53 130.922 1120.53 Q134.556 1120.53 136.362 1116.99 Q138.191 1113.42 138.191 1106.32 Q138.191 1099.19 136.362 1095.64 Q134.556 1092.08 130.922 1092.08 M130.922 1088.38 Q136.732 1088.38 139.788 1092.98 Q142.867 1097.57 142.867 1106.32 Q142.867 1115.04 139.788 1119.65 Q136.732 1124.23 130.922 1124.23 Q125.112 1124.23 122.033 1119.65 Q118.978 1115.04 118.978 1106.32 Q118.978 1097.57 122.033 1092.98 Q125.112 1088.38 130.922 1088.38 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M130.922 752.645 Q127.311 752.645 125.482 756.209 Q123.677 759.751 123.677 766.881 Q123.677 773.987 125.482 777.552 Q127.311 781.094 130.922 781.094 Q134.556 781.094 136.362 777.552 Q138.191 773.987 138.191 766.881 Q138.191 759.751 136.362 756.209 Q134.556 752.645 130.922 752.645 M130.922 748.941 Q136.732 748.941 139.788 753.547 Q142.867 758.131 142.867 766.881 Q142.867 775.608 139.788 780.214 Q136.732 784.797 130.922 784.797 Q125.112 784.797 122.033 780.214 Q118.978 775.608 118.978 766.881 Q118.978 758.131 122.033 753.547 Q125.112 748.941 130.922 748.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M91.5706 440.756 L99.2095 440.756 L99.2095 414.39 L90.8993 416.057 L90.8993 411.798 L99.1632 410.131 L103.839 410.131 L103.839 440.756 L111.478 440.756 L111.478 444.691 L91.5706 444.691 L91.5706 440.756 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M130.922 413.21 Q127.311 413.21 125.482 416.775 Q123.677 420.316 123.677 427.446 Q123.677 434.552 125.482 438.117 Q127.311 441.659 130.922 441.659 Q134.556 441.659 136.362 438.117 Q138.191 434.552 138.191 427.446 Q138.191 420.316 136.362 416.775 Q134.556 413.21 130.922 413.21 M130.922 409.506 Q136.732 409.506 139.788 414.113 Q142.867 418.696 142.867 427.446 Q142.867 436.173 139.788 440.779 Q136.732 445.362 130.922 445.362 Q125.112 445.362 122.033 440.779 Q118.978 436.173 118.978 427.446 Q118.978 418.696 122.033 414.113 Q125.112 409.506 130.922 409.506 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M94.7882 101.321 L111.108 101.321 L111.108 105.256 L89.1632 105.256 L89.1632 101.321 Q91.8252 98.5665 96.4085 93.9369 Q101.015 89.2841 102.196 87.9416 Q104.441 85.4184 105.321 83.6823 Q106.223 81.9231 106.223 80.2333 Q106.223 77.4786 104.279 75.7425 Q102.358 74.0064 99.2558 74.0064 Q97.0567 74.0064 94.603 74.7703 Q92.1725 75.5342 89.3947 77.0851 L89.3947 72.3629 Q92.2188 71.2287 94.6724 70.65 Q97.1261 70.0713 99.1632 70.0713 Q104.534 70.0713 107.728 72.7565 Q110.922 75.4416 110.922 79.9323 Q110.922 82.062 110.112 83.9832 Q109.325 85.8814 107.219 88.474 Q106.64 89.1453 103.538 92.3628 Q100.436 95.5573 94.7882 101.321 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M130.922 73.775 Q127.311 73.775 125.482 77.3398 Q123.677 80.8814 123.677 88.011 Q123.677 95.1174 125.482 98.6822 Q127.311 102.224 130.922 102.224 Q134.556 102.224 136.362 98.6822 Q138.191 95.1174 138.191 88.011 Q138.191 80.8814 136.362 77.3398 Q134.556 73.775 130.922 73.775 M130.922 70.0713 Q136.732 70.0713 139.788 74.6777 Q142.867 79.261 142.867 88.011 Q142.867 96.7378 139.788 101.344 Q136.732 105.928 130.922 105.928 Q125.112 105.928 122.033 101.344 Q118.978 96.7378 118.978 88.011 Q118.978 79.261 122.033 74.6777 Q125.112 70.0713 130.922 70.0713 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip092)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1605.25,87.9763 1605.25,1445.72 "/>
<polyline clip-path="url(#clip092)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="926.376,1445.72 926.376,87.9763 "/>
<polyline clip-path="url(#clip092)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1944.68,1106.28 586.942,1106.28 "/>
<polyline clip-path="url(#clip092)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="586.942,427.411 1944.68,427.411 "/>
<polyline clip-path="url(#clip092)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1752.04,156.757 1322.68,1444.82 "/>
<polyline clip-path="url(#clip092)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1367.64,766.846 1428.36,888.286 "/>
<polyline clip-path="url(#clip092)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1428.36,848.037 1428.36,888.286 1396.16,864.136 "/>
<polyline clip-path="url(#clip092)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1428.36,888.286 1367.64,766.846 "/>
<circle clip-path="url(#clip092)" cx="1367.64" cy="766.846" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<circle clip-path="url(#clip092)" cx="1476.26" cy="984.084" r="14.4" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<path clip-path="url(#clip090)" d="M1817.4 509.938 L2280.29 509.938 L2280.29 95.2176 L1817.4 95.2176  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<polyline clip-path="url(#clip090)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1817.4,509.938 2280.29,509.938 2280.29,95.2176 1817.4,95.2176 1817.4,509.938 "/>
<polyline clip-path="url(#clip090)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1841.55,147.058 1986.48,147.058 "/>
<path clip-path="url(#clip090)" d="M2010.63 129.778 L2015.35 129.778 L2022.62 158.99 L2029.87 129.778 L2035.12 129.778 L2042.39 158.99 L2049.64 129.778 L2054.38 129.778 L2045.7 164.338 L2039.82 164.338 L2032.53 134.338 L2025.17 164.338 L2019.29 164.338 L2010.63 129.778 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2069.15 151.305 Q2063.99 151.305 2062 152.486 Q2060.01 153.666 2060.01 156.514 Q2060.01 158.782 2061.49 160.125 Q2062.99 161.444 2065.56 161.444 Q2069.1 161.444 2071.23 158.944 Q2073.38 156.421 2073.38 152.254 L2073.38 151.305 L2069.15 151.305 M2077.64 149.546 L2077.64 164.338 L2073.38 164.338 L2073.38 160.402 Q2071.93 162.763 2069.75 163.898 Q2067.57 165.009 2064.43 165.009 Q2060.45 165.009 2058.08 162.787 Q2055.75 160.541 2055.75 156.791 Q2055.75 152.416 2058.66 150.194 Q2061.6 147.972 2067.41 147.972 L2073.38 147.972 L2073.38 147.555 Q2073.38 144.615 2071.44 143.018 Q2069.52 141.398 2066.02 141.398 Q2063.8 141.398 2061.7 141.93 Q2059.59 142.463 2057.64 143.527 L2057.64 139.592 Q2059.98 138.69 2062.18 138.25 Q2064.38 137.787 2066.46 137.787 Q2072.09 137.787 2074.87 140.703 Q2077.64 143.62 2077.64 149.546 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2086.42 128.319 L2090.68 128.319 L2090.68 164.338 L2086.42 164.338 L2086.42 128.319 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2099.59 128.319 L2103.85 128.319 L2103.85 164.338 L2099.59 164.338 L2099.59 128.319 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip090)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1841.55,198.898 1986.48,198.898 "/>
<path clip-path="url(#clip090)" d="M2010.63 181.618 L2015.35 181.618 L2022.62 210.83 L2029.87 181.618 L2035.12 181.618 L2042.39 210.83 L2049.64 181.618 L2054.38 181.618 L2045.7 216.178 L2039.82 216.178 L2032.53 186.178 L2025.17 216.178 L2019.29 216.178 L2010.63 181.618 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2069.15 203.145 Q2063.99 203.145 2062 204.326 Q2060.01 205.506 2060.01 208.354 Q2060.01 210.622 2061.49 211.965 Q2062.99 213.284 2065.56 213.284 Q2069.1 213.284 2071.23 210.784 Q2073.38 208.261 2073.38 204.094 L2073.38 203.145 L2069.15 203.145 M2077.64 201.386 L2077.64 216.178 L2073.38 216.178 L2073.38 212.242 Q2071.93 214.603 2069.75 215.738 Q2067.57 216.849 2064.43 216.849 Q2060.45 216.849 2058.08 214.627 Q2055.75 212.381 2055.75 208.631 Q2055.75 204.256 2058.66 202.034 Q2061.6 199.812 2067.41 199.812 L2073.38 199.812 L2073.38 199.395 Q2073.38 196.455 2071.44 194.858 Q2069.52 193.238 2066.02 193.238 Q2063.8 193.238 2061.7 193.77 Q2059.59 194.303 2057.64 195.367 L2057.64 191.432 Q2059.98 190.53 2062.18 190.09 Q2064.38 189.627 2066.46 189.627 Q2072.09 189.627 2074.87 192.543 Q2077.64 195.46 2077.64 201.386 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2086.42 180.159 L2090.68 180.159 L2090.68 216.178 L2086.42 216.178 L2086.42 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2099.59 180.159 L2103.85 180.159 L2103.85 216.178 L2099.59 216.178 L2099.59 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip090)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1841.55,250.738 1986.48,250.738 "/>
<path clip-path="url(#clip090)" d="M2010.63 233.458 L2015.35 233.458 L2022.62 262.67 L2029.87 233.458 L2035.12 233.458 L2042.39 262.67 L2049.64 233.458 L2054.38 233.458 L2045.7 268.018 L2039.82 268.018 L2032.53 238.018 L2025.17 268.018 L2019.29 268.018 L2010.63 233.458 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2069.15 254.985 Q2063.99 254.985 2062 256.166 Q2060.01 257.346 2060.01 260.194 Q2060.01 262.462 2061.49 263.805 Q2062.99 265.124 2065.56 265.124 Q2069.1 265.124 2071.23 262.624 Q2073.38 260.101 2073.38 255.934 L2073.38 254.985 L2069.15 254.985 M2077.64 253.226 L2077.64 268.018 L2073.38 268.018 L2073.38 264.082 Q2071.93 266.443 2069.75 267.578 Q2067.57 268.689 2064.43 268.689 Q2060.45 268.689 2058.08 266.467 Q2055.75 264.221 2055.75 260.471 Q2055.75 256.096 2058.66 253.874 Q2061.6 251.652 2067.41 251.652 L2073.38 251.652 L2073.38 251.235 Q2073.38 248.295 2071.44 246.698 Q2069.52 245.078 2066.02 245.078 Q2063.8 245.078 2061.7 245.61 Q2059.59 246.143 2057.64 247.207 L2057.64 243.272 Q2059.98 242.37 2062.18 241.93 Q2064.38 241.467 2066.46 241.467 Q2072.09 241.467 2074.87 244.383 Q2077.64 247.3 2077.64 253.226 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2086.42 231.999 L2090.68 231.999 L2090.68 268.018 L2086.42 268.018 L2086.42 231.999 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2099.59 231.999 L2103.85 231.999 L2103.85 268.018 L2099.59 268.018 L2099.59 231.999 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip090)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1841.55,302.578 1986.48,302.578 "/>
<path clip-path="url(#clip090)" d="M2010.63 285.298 L2015.35 285.298 L2022.62 314.51 L2029.87 285.298 L2035.12 285.298 L2042.39 314.51 L2049.64 285.298 L2054.38 285.298 L2045.7 319.858 L2039.82 319.858 L2032.53 289.858 L2025.17 319.858 L2019.29 319.858 L2010.63 285.298 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2069.15 306.825 Q2063.99 306.825 2062 308.006 Q2060.01 309.186 2060.01 312.034 Q2060.01 314.302 2061.49 315.645 Q2062.99 316.964 2065.56 316.964 Q2069.1 316.964 2071.23 314.464 Q2073.38 311.941 2073.38 307.774 L2073.38 306.825 L2069.15 306.825 M2077.64 305.066 L2077.64 319.858 L2073.38 319.858 L2073.38 315.922 Q2071.93 318.283 2069.75 319.418 Q2067.57 320.529 2064.43 320.529 Q2060.45 320.529 2058.08 318.307 Q2055.75 316.061 2055.75 312.311 Q2055.75 307.936 2058.66 305.714 Q2061.6 303.492 2067.41 303.492 L2073.38 303.492 L2073.38 303.075 Q2073.38 300.135 2071.44 298.538 Q2069.52 296.918 2066.02 296.918 Q2063.8 296.918 2061.7 297.45 Q2059.59 297.983 2057.64 299.047 L2057.64 295.112 Q2059.98 294.21 2062.18 293.77 Q2064.38 293.307 2066.46 293.307 Q2072.09 293.307 2074.87 296.223 Q2077.64 299.14 2077.64 305.066 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2086.42 283.839 L2090.68 283.839 L2090.68 319.858 L2086.42 319.858 L2086.42 283.839 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2099.59 283.839 L2103.85 283.839 L2103.85 319.858 L2099.59 319.858 L2099.59 283.839 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip090)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1841.55,354.418 1986.48,354.418 "/>
<path clip-path="url(#clip090)" d="M2010.63 337.138 L2015.35 337.138 L2022.62 366.35 L2029.87 337.138 L2035.12 337.138 L2042.39 366.35 L2049.64 337.138 L2054.38 337.138 L2045.7 371.698 L2039.82 371.698 L2032.53 341.698 L2025.17 371.698 L2019.29 371.698 L2010.63 337.138 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2069.15 358.665 Q2063.99 358.665 2062 359.846 Q2060.01 361.026 2060.01 363.874 Q2060.01 366.142 2061.49 367.485 Q2062.99 368.804 2065.56 368.804 Q2069.1 368.804 2071.23 366.304 Q2073.38 363.781 2073.38 359.614 L2073.38 358.665 L2069.15 358.665 M2077.64 356.906 L2077.64 371.698 L2073.38 371.698 L2073.38 367.762 Q2071.93 370.123 2069.75 371.258 Q2067.57 372.369 2064.43 372.369 Q2060.45 372.369 2058.08 370.147 Q2055.75 367.901 2055.75 364.151 Q2055.75 359.776 2058.66 357.554 Q2061.6 355.332 2067.41 355.332 L2073.38 355.332 L2073.38 354.915 Q2073.38 351.975 2071.44 350.378 Q2069.52 348.758 2066.02 348.758 Q2063.8 348.758 2061.7 349.29 Q2059.59 349.823 2057.64 350.887 L2057.64 346.952 Q2059.98 346.05 2062.18 345.61 Q2064.38 345.147 2066.46 345.147 Q2072.09 345.147 2074.87 348.063 Q2077.64 350.98 2077.64 356.906 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2086.42 335.679 L2090.68 335.679 L2090.68 371.698 L2086.42 371.698 L2086.42 335.679 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2099.59 335.679 L2103.85 335.679 L2103.85 371.698 L2099.59 371.698 L2099.59 335.679 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip090)" cx="1914.01" cy="406.258" r="19.7486" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="5.85143"/>
<path clip-path="url(#clip090)" d="M2015.31 392.82 L2015.31 405.806 L2021.19 405.806 Q2024.45 405.806 2026.23 404.116 Q2028.01 402.427 2028.01 399.302 Q2028.01 396.2 2026.23 394.51 Q2024.45 392.82 2021.19 392.82 L2015.31 392.82 M2010.63 388.978 L2021.19 388.978 Q2027 388.978 2029.96 391.616 Q2032.95 394.232 2032.95 399.302 Q2032.95 404.417 2029.96 407.033 Q2027 409.649 2021.19 409.649 L2015.31 409.649 L2015.31 423.538 L2010.63 423.538 L2010.63 388.978 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2060.58 407.889 L2060.58 423.538 L2056.32 423.538 L2056.32 408.028 Q2056.32 404.348 2054.89 402.519 Q2053.45 400.69 2050.58 400.69 Q2047.14 400.69 2045.14 402.89 Q2043.15 405.089 2043.15 408.885 L2043.15 423.538 L2038.87 423.538 L2038.87 387.519 L2043.15 387.519 L2043.15 401.64 Q2044.68 399.302 2046.74 398.144 Q2048.82 396.987 2051.53 396.987 Q2056 396.987 2058.29 399.765 Q2060.58 402.519 2060.58 407.889 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2069.08 397.612 L2073.34 397.612 L2073.34 423.538 L2069.08 423.538 L2069.08 397.612 M2069.08 387.519 L2073.34 387.519 L2073.34 392.913 L2069.08 392.913 L2069.08 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2082.25 387.519 L2086.51 387.519 L2086.51 423.538 L2082.25 423.538 L2082.25 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2095.42 397.612 L2099.68 397.612 L2099.68 423.538 L2095.42 423.538 L2095.42 397.612 M2095.42 387.519 L2099.68 387.519 L2099.68 392.913 L2095.42 392.913 L2095.42 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2112.71 419.649 L2112.71 433.399 L2108.43 433.399 L2108.43 397.612 L2112.71 397.612 L2112.71 401.547 Q2114.06 399.232 2116.09 398.121 Q2118.15 396.987 2121 396.987 Q2125.72 396.987 2128.66 400.737 Q2131.63 404.487 2131.63 410.598 Q2131.63 416.709 2128.66 420.459 Q2125.72 424.209 2121 424.209 Q2118.15 424.209 2116.09 423.098 Q2114.06 421.963 2112.71 419.649 M2127.2 410.598 Q2127.2 405.899 2125.26 403.237 Q2123.34 400.552 2119.96 400.552 Q2116.58 400.552 2114.63 403.237 Q2112.71 405.899 2112.71 410.598 Q2112.71 415.297 2114.63 417.982 Q2116.58 420.644 2119.96 420.644 Q2123.34 420.644 2125.26 417.982 Q2127.2 415.297 2127.2 410.598 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip090)" cx="1914.01" cy="458.098" r="20.48" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="4.55111"/>
<path clip-path="url(#clip090)" d="M2038.5 443.48 L2038.5 448.41 Q2036.14 446.211 2033.45 445.123 Q2030.79 444.035 2027.78 444.035 Q2021.86 444.035 2018.71 447.669 Q2015.56 451.28 2015.56 458.132 Q2015.56 464.961 2018.71 468.595 Q2021.86 472.206 2027.78 472.206 Q2030.79 472.206 2033.45 471.118 Q2036.14 470.03 2038.5 467.831 L2038.5 472.716 Q2036.05 474.382 2033.29 475.216 Q2030.56 476.049 2027.51 476.049 Q2019.66 476.049 2015.14 471.257 Q2010.63 466.442 2010.63 458.132 Q2010.63 449.799 2015.14 445.007 Q2019.66 440.193 2027.51 440.193 Q2030.61 440.193 2033.34 441.026 Q2036.09 441.836 2038.5 443.48 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2045.54 439.359 L2049.8 439.359 L2049.8 475.378 L2045.54 475.378 L2045.54 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2068.76 452.438 Q2065.33 452.438 2063.34 455.123 Q2061.35 457.785 2061.35 462.438 Q2061.35 467.091 2063.32 469.776 Q2065.31 472.438 2068.76 472.438 Q2072.16 472.438 2074.15 469.753 Q2076.14 467.067 2076.14 462.438 Q2076.14 457.831 2074.15 455.146 Q2072.16 452.438 2068.76 452.438 M2068.76 448.827 Q2074.31 448.827 2077.48 452.438 Q2080.65 456.049 2080.65 462.438 Q2080.65 468.804 2077.48 472.438 Q2074.31 476.049 2068.76 476.049 Q2063.18 476.049 2060.01 472.438 Q2056.86 468.804 2056.86 462.438 Q2056.86 456.049 2060.01 452.438 Q2063.18 448.827 2068.76 448.827 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2104.24 450.216 L2104.24 454.243 Q2102.44 453.317 2100.49 452.855 Q2098.55 452.392 2096.46 452.392 Q2093.29 452.392 2091.7 453.364 Q2090.12 454.336 2090.12 456.28 Q2090.12 457.762 2091.26 458.618 Q2092.39 459.452 2095.82 460.216 L2097.27 460.54 Q2101.81 461.512 2103.71 463.294 Q2105.63 465.054 2105.63 468.225 Q2105.63 471.836 2102.76 473.942 Q2099.91 476.049 2094.91 476.049 Q2092.83 476.049 2090.56 475.632 Q2088.32 475.239 2085.82 474.428 L2085.82 470.03 Q2088.18 471.257 2090.47 471.882 Q2092.76 472.484 2095.01 472.484 Q2098.01 472.484 2099.63 471.466 Q2101.26 470.424 2101.26 468.549 Q2101.26 466.813 2100.07 465.887 Q2098.92 464.961 2094.96 464.104 L2093.48 463.757 Q2089.52 462.924 2087.76 461.211 Q2086 459.475 2086 456.466 Q2086 452.808 2088.59 450.818 Q2091.19 448.827 2095.95 448.827 Q2098.32 448.827 2100.4 449.174 Q2102.48 449.521 2104.24 450.216 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2134.59 461.35 L2134.59 463.433 L2115.01 463.433 Q2115.28 467.831 2117.64 470.146 Q2120.03 472.438 2124.26 472.438 Q2126.72 472.438 2129.01 471.836 Q2131.32 471.234 2133.59 470.03 L2133.59 474.058 Q2131.3 475.03 2128.89 475.54 Q2126.49 476.049 2124.01 476.049 Q2117.81 476.049 2114.17 472.438 Q2110.56 468.827 2110.56 462.669 Q2110.56 456.304 2113.99 452.577 Q2117.44 448.827 2123.27 448.827 Q2128.5 448.827 2131.53 452.206 Q2134.59 455.563 2134.59 461.35 M2130.33 460.1 Q2130.28 456.605 2128.36 454.521 Q2126.46 452.438 2123.32 452.438 Q2119.75 452.438 2117.6 454.452 Q2115.47 456.466 2115.14 460.123 L2130.33 460.1 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2158.11 450.216 L2158.11 454.243 Q2156.3 453.317 2154.36 452.855 Q2152.41 452.392 2150.33 452.392 Q2147.16 452.392 2145.56 453.364 Q2143.99 454.336 2143.99 456.28 Q2143.99 457.762 2145.12 458.618 Q2146.25 459.452 2149.68 460.216 L2151.14 460.54 Q2155.68 461.512 2157.57 463.294 Q2159.5 465.054 2159.5 468.225 Q2159.5 471.836 2156.63 473.942 Q2153.78 476.049 2148.78 476.049 Q2146.69 476.049 2144.43 475.632 Q2142.18 475.239 2139.68 474.428 L2139.68 470.03 Q2142.04 471.257 2144.33 471.882 Q2146.63 472.484 2148.87 472.484 Q2151.88 472.484 2153.5 471.466 Q2155.12 470.424 2155.12 468.549 Q2155.12 466.813 2153.94 465.887 Q2152.78 464.961 2148.82 464.104 L2147.34 463.757 Q2143.38 462.924 2141.63 461.211 Q2139.87 459.475 2139.87 456.466 Q2139.87 452.808 2142.46 450.818 Q2145.05 448.827 2149.82 448.827 Q2152.18 448.827 2154.26 449.174 Q2156.35 449.521 2158.11 450.216 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2170.49 442.091 L2170.49 449.452 L2179.26 449.452 L2179.26 452.762 L2170.49 452.762 L2170.49 466.836 Q2170.49 470.007 2171.35 470.91 Q2172.23 471.813 2174.89 471.813 L2179.26 471.813 L2179.26 475.378 L2174.89 475.378 Q2169.96 475.378 2168.08 473.549 Q2166.21 471.697 2166.21 466.836 L2166.21 452.762 L2163.08 452.762 L2163.08 449.452 L2166.21 449.452 L2166.21 442.091 L2170.49 442.091 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2221.49 459.729 L2221.49 475.378 L2217.23 475.378 L2217.23 459.868 Q2217.23 456.188 2215.79 454.359 Q2214.36 452.53 2211.49 452.53 Q2208.04 452.53 2206.05 454.73 Q2204.06 456.929 2204.06 460.725 L2204.06 475.378 L2199.77 475.378 L2199.77 439.359 L2204.06 439.359 L2204.06 453.48 Q2205.58 451.142 2207.64 449.984 Q2209.73 448.827 2212.44 448.827 Q2216.9 448.827 2219.19 451.605 Q2221.49 454.359 2221.49 459.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2229.98 449.452 L2234.24 449.452 L2234.24 475.378 L2229.98 475.378 L2229.98 449.452 M2229.98 439.359 L2234.24 439.359 L2234.24 444.753 L2229.98 444.753 L2229.98 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip090)" d="M2247.37 442.091 L2247.37 449.452 L2256.14 449.452 L2256.14 452.762 L2247.37 452.762 L2247.37 466.836 Q2247.37 470.007 2248.22 470.91 Q2249.1 471.813 2251.76 471.813 L2256.14 471.813 L2256.14 475.378 L2251.76 475.378 Q2246.83 475.378 2244.96 473.549 Q2243.08 471.697 2243.08 466.836 L2243.08 452.762 L2239.96 452.762 L2239.96 449.452 L2243.08 449.452 L2243.08 442.091 L2247.37 442.091 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /></svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA pd˰persist_js_state·has_pluto_hook_features§cell_id$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5depends_on_disabled_cells§runtime 4ĵpublished_object_keysdepends_on_skipped_cells§errored$13fef49c-1c9e-11eb-2aa3-d3aa2bfd0d57queued¤logsrunning¦outputbody<div class="markdown"><p>By defining a method for <code>interact</code> that takes a sphere intersection, we are now able to use the machinery developed in Exercise 2 to simulate a scene with both lenses and mirrors. Let&#39;s try it out&#33;</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gHpersist_js_state·has_pluto_hook_features§cell_id$13fef49c-1c9e-11eb-2aa3-d3aa2bfd0d57depends_on_disabled_cells§runtime hεpublished_object_keysdepends_on_skipped_cells§errored$1df82c20-19c4-11eb-0959-8543a0d5630dqueued¤logsrunning¦outputbodym<div class="markdown"><p>Submission by: <strong><em>Jazzy Doe</em></strong> &#40;jazz@mit.edu&#41;</p>
</div>mimetext/htmlrootassigneelast_run_timestampA k~ppersist_js_state·has_pluto_hook_features§cell_id$1df82c20-19c4-11eb-0959-8543a0d5630ddepends_on_disabled_cells§runtime ]published_object_keysdepends_on_skipped_cells§errored$337918f4-194f-11eb-0b45-b13fef3b23bfqueued¤logsrunning¦outputbodyه<img src="https://upload.wikimedia.org/wikipedia/commons/6/67/Line-Sphere_Intersection_Cropped.png" controls="" type="image/png"></img>mimetext/htmlrootassigneelast_run_timestampA p ypersist_js_state·has_pluto_hook_features§cell_id$337918f4-194f-11eb-0b45-b13fef3b23bfdepends_on_disabled_cells§runtimeڎ^published_object_keysdepends_on_skipped_cells§errored$70b8401e-1c7e-11eb-16b2-d54d8f66d71aqueued¤logsrunning¦outputbody{<div class="markdown"><p>👉 Verify that the function <code>reflect</code> works by writing a simple test case:</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gEpersist_js_state·has_pluto_hook_features§cell_id$70b8401e-1c7e-11eb-16b2-d54d8f66d71adepends_on_disabled_cells§runtime Mõpublished_object_keysdepends_on_skipped_cells§errored$eb35ac4a-1acc-11eb-0729-ff85c8406c45queued¤logsrunning¦outputbody<bond def="aberration_viz_ior" unique_id="EhkLrzGaRZWC"><input 
type="range" 
min="1.0" 
step="0.0001" 
max="2.0" 
value="1.0"
oninput="this.nextElementSibling.value=this.value"
><output>1.0</output></bond>mimetext/htmlrootassigneelast_run_timestampA qSmpersist_js_state·has_pluto_hook_features§cell_id$eb35ac4a-1acc-11eb-0729-ff85c8406c45depends_on_disabled_cells§runtime *8published_object_keysdepends_on_skipped_cells§errored$0b03316c-1c80-11eb-347c-1b5c9a0ae379queued¤logsrunning¦outputbodyprefixPhotonelementspprefixFloat64elements6.2text/plain-6.4text/plaintypeArrayprefix_shortobjectid64360f87adf4dd5a!application/vnd.pluto.tree+objectlprefixFloat64elements-0.894427text/plain-0.447214text/plaintypeArrayprefix_shortobjectid6ff890d0cad321a!application/vnd.pluto.tree+objectior1.0text/plaintypestructprefix_shortPhotonobjectid58d214267d07e633mime!application/vnd.pluto.tree+objectrootassigneetest_new_photonlast_run_timestampA pdcpersist_js_state·has_pluto_hook_features§cell_id$0b03316c-1c80-11eb-347c-1b5c9a0ae379depends_on_disabled_cells§runtime?published_object_keysdepends_on_skipped_cells§errored$ec3ed530-19c3-11eb-10bb-a55e77550d1fqueued¤logsrunning¦outputbody'almost (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA qT˫persist_js_state·has_pluto_hook_features§cell_id$ec3ed530-19c3-11eb-10bb-a55e77550d1fdepends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$42d65f56-1aca-11eb-1079-e32f85554349queued¤logsrunning¦outputbodyI<div class="markdown"><p><br><br><br><br></p>
<h4>Exercise 1.3 - <em>hitting the wall</em></h4>
<p>👉 Write a function <code>intersection</code> that takes a <code>photon</code> and a <code>wall</code>, and returns either a <code>Miss</code> or an <code>Intersection</code>, based on the result of <code>intersection_distance&#40;photon, wall&#41;</code> <span class="tex">$&#61; D$</span>.</p>
<p>If <span class="tex">$D$</span> is <em>positive</em>, then the photon will hit the wall, and we should return an <code>Intersection</code>. We already have the intersected object, and we have <span class="tex">$D$</span>, our intersection distance. To find the intersection <em>point</em>, we use the photon&#39;s position and velocity.</p>
<p class="tex">$$p_&#123;\text&#123;intersection&#125;&#125; &#61; p_&#123;\text&#123;ray&#125;&#125; &#43; D\hat \ell$$</p>
<p>If <span class="tex">$D$</span> is <em>negative</em> &#40;or zero&#41;, then the wall is <em>behind</em> the photon - we should return a <code>Miss</code>.</p>
<h5>Floating points</h5>
<p>We are using <em>floating points</em> &#40;<code>Float64</code>&#41; to store positions, distances, etc., which means that we need to account for small errors. Like in the lecture, we will not check for <code>D &gt; 0</code>, but <code>D &gt; ϵ</code> with <code>ϵ &#61; 1e-3</code>.</p>
</div>mimetext/htmlrootassigneelast_run_timestampA gCpersist_js_state·has_pluto_hook_features§cell_id$42d65f56-1aca-11eb-1079-e32f85554349depends_on_disabled_cells§runtime VԵpublished_object_keysdepends_on_skipped_cells§errored$1b0c0e4c-1c73-11eb-225d-23c731455755queued¤logsrunning¦outputbodyprefixAnyelementsprefixIntersection{Wall}elementsobjectprefixWallelementspositionprefixFloat64elementsmoretypeArrayprefix_shortobjectidfffdf189f71f6f9c!application/vnd.pluto.tree+objectnormalprefixFloat64elementsmoretypeArrayprefix_shortobjectid39926e9eea486b0d!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidc629b1cc33955b09!application/vnd.pluto.tree+objectdistance15.6525text/plainpointprefixFloat64elements10.0text/plain-14.0text/plaintypeArrayprefix_shortobjectid4191436c7b9f5828!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectid549e473e39f9430b!application/vnd.pluto.tree+objectprefixMisselementstypestructprefix_shortMissobjectidffffffffcd54a1ce!application/vnd.pluto.tree+objectprefixIntersection{Wall}elementsobjectprefixWallelementspositionprefixFloat64elementsmoretypeArrayprefix_shortobjectidda9ea7f12775ea2!application/vnd.pluto.tree+objectnormalprefixFloat64elementsmoretypeArrayprefix_shortobjectid1c5e29cc2fe01ed4!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectid8949e5650f0de9e3!application/vnd.pluto.tree+objectdistance11.1803text/plainpointprefixFloat64elements8.0text/plain-10.0text/plaintypeArrayprefix_shortobjectid435544f97f28621e!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectid66741d1c64cd92da!application/vnd.pluto.tree+objectprefixMisselementstypestructprefix_shortMissobjectidffffffffcd54a1ce!application/vnd.pluto.tree+objectprefixIntersection{Wall}elementsobjectprefixWallelementspositionprefixFloat64elementsmoretypeArrayprefix_shortobjectidcb5693189533ec6e!application/vnd.pluto.tree+objectnormalprefixFloat64elementsmoretypeArrayprefix_shortobjectid1ec3964025f3aa0!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidcfcbe35619eca23c!application/vnd.pluto.tree+objectdistance7.15542text/plainpointprefixFloat64elements6.2text/plain-6.4text/plaintypeArrayprefix_shortobjectid34cbf1fff174f98!application/vnd.pluto.tree+objecttypestructprefix_shortIntersectionobjectid173dde74287e2c2c!application/vnd.pluto.tree+objecttypeArrayprefix_shortobjectid2bd0b9f4b30aa531mime!application/vnd.pluto.tree+objectrootassigneeall_intersectionslast_run_timestampA p,~persist_js_state·has_pluto_hook_features§cell_id$1b0c0e4c-1c73-11eb-225d-23c731455755depends_on_disabled_cells§runtimefMpublished_object_keysdepends_on_skipped_cells§errored$e45e1d36-1a12-11eb-2720-294c4be6e9fdqueued¤logsrunning¦outputbody<{<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="200" viewBox="0 0 1600 800">
<defs>
  <clipPath id="clip810">
    <rect x="0" y="0" width="1600" height="800"/>
  </clipPath>
</defs>
<path clip-path="url(#clip810)" d="M0 800 L1600 800 L1600 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip811">
    <rect x="320" y="0" width="1121" height="800"/>
  </clipPath>
</defs>
<path clip-path="url(#clip810)" d="M170.867 703.088 L1552.76 703.088 L1552.76 47.2441 L170.867 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip812">
    <rect x="170" y="47" width="1383" height="657"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="405.279,703.088 405.279,47.2441 "/>
<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="731.374,703.088 731.374,47.2441 "/>
<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1057.47,703.088 1057.47,47.2441 "/>
<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1383.56,703.088 1383.56,47.2441 "/>
<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,684.956 1552.76,684.956 "/>
<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,521.908 1552.76,521.908 "/>
<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,358.861 1552.76,358.861 "/>
<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,195.814 1552.76,195.814 "/>
<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,703.088 1552.76,703.088 "/>
<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="405.279,703.088 405.279,684.19 "/>
<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="731.374,703.088 731.374,684.19 "/>
<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1057.47,703.088 1057.47,684.19 "/>
<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1383.56,703.088 1383.56,684.19 "/>
<path clip-path="url(#clip810)" d="M359.342 742.259 L389.018 742.259 L389.018 746.194 L359.342 746.194 L359.342 742.259 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M403.138 755.153 L419.457 755.153 L419.457 759.088 L397.513 759.088 L397.513 755.153 Q400.175 752.398 404.758 747.768 Q409.365 743.116 410.545 741.773 Q412.791 739.25 413.67 737.514 Q414.573 735.755 414.573 734.065 Q414.573 731.31 412.629 729.574 Q410.707 727.838 407.606 727.838 Q405.406 727.838 402.953 728.602 Q400.522 729.366 397.744 730.917 L397.744 726.195 Q400.569 725.06 403.022 724.482 Q405.476 723.903 407.513 723.903 Q412.883 723.903 416.078 726.588 Q419.272 729.273 419.272 733.764 Q419.272 735.894 418.462 737.815 Q417.675 739.713 415.568 742.306 Q414.99 742.977 411.888 746.194 Q408.786 749.389 403.138 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M439.272 727.607 Q435.661 727.607 433.832 731.171 Q432.027 734.713 432.027 741.843 Q432.027 748.949 433.832 752.514 Q435.661 756.055 439.272 756.055 Q442.906 756.055 444.712 752.514 Q446.541 748.949 446.541 741.843 Q446.541 734.713 444.712 731.171 Q442.906 727.607 439.272 727.607 M439.272 723.903 Q445.082 723.903 448.138 728.509 Q451.216 733.093 451.216 741.843 Q451.216 750.569 448.138 755.176 Q445.082 759.759 439.272 759.759 Q433.462 759.759 430.383 755.176 Q427.328 750.569 427.328 741.843 Q427.328 733.093 430.383 728.509 Q433.462 723.903 439.272 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M731.374 727.607 Q727.762 727.607 725.934 731.171 Q724.128 734.713 724.128 741.843 Q724.128 748.949 725.934 752.514 Q727.762 756.055 731.374 756.055 Q735.008 756.055 736.813 752.514 Q738.642 748.949 738.642 741.843 Q738.642 734.713 736.813 731.171 Q735.008 727.607 731.374 727.607 M731.374 723.903 Q737.184 723.903 740.239 728.509 Q743.318 733.093 743.318 741.843 Q743.318 750.569 740.239 755.176 Q737.184 759.759 731.374 759.759 Q725.563 759.759 722.485 755.176 Q719.429 750.569 719.429 741.843 Q719.429 733.093 722.485 728.509 Q725.563 723.903 731.374 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1036.24 755.153 L1052.56 755.153 L1052.56 759.088 L1030.62 759.088 L1030.62 755.153 Q1033.28 752.398 1037.86 747.768 Q1042.47 743.116 1043.65 741.773 Q1045.89 739.25 1046.77 737.514 Q1047.68 735.755 1047.68 734.065 Q1047.68 731.31 1045.73 729.574 Q1043.81 727.838 1040.71 727.838 Q1038.51 727.838 1036.06 728.602 Q1033.63 729.366 1030.85 730.917 L1030.85 726.195 Q1033.67 725.06 1036.13 724.482 Q1038.58 723.903 1040.62 723.903 Q1045.99 723.903 1049.18 726.588 Q1052.38 729.273 1052.38 733.764 Q1052.38 735.894 1051.57 737.815 Q1050.78 739.713 1048.67 742.306 Q1048.09 742.977 1044.99 746.194 Q1041.89 749.389 1036.24 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1072.38 727.607 Q1068.76 727.607 1066.94 731.171 Q1065.13 734.713 1065.13 741.843 Q1065.13 748.949 1066.94 752.514 Q1068.76 756.055 1072.38 756.055 Q1076.01 756.055 1077.81 752.514 Q1079.64 748.949 1079.64 741.843 Q1079.64 734.713 1077.81 731.171 Q1076.01 727.607 1072.38 727.607 M1072.38 723.903 Q1078.19 723.903 1081.24 728.509 Q1084.32 733.093 1084.32 741.843 Q1084.32 750.569 1081.24 755.176 Q1078.19 759.759 1072.38 759.759 Q1066.57 759.759 1063.49 755.176 Q1060.43 750.569 1060.43 741.843 Q1060.43 733.093 1063.49 728.509 Q1066.57 723.903 1072.38 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1371.73 728.602 L1359.93 747.051 L1371.73 747.051 L1371.73 728.602 M1370.51 724.528 L1376.39 724.528 L1376.39 747.051 L1381.32 747.051 L1381.32 750.94 L1376.39 750.94 L1376.39 759.088 L1371.73 759.088 L1371.73 750.94 L1356.13 750.94 L1356.13 746.426 L1370.51 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1399.05 727.607 Q1395.44 727.607 1393.61 731.171 Q1391.8 734.713 1391.8 741.843 Q1391.8 748.949 1393.61 752.514 Q1395.44 756.055 1399.05 756.055 Q1402.68 756.055 1404.49 752.514 Q1406.32 748.949 1406.32 741.843 Q1406.32 734.713 1404.49 731.171 Q1402.68 727.607 1399.05 727.607 M1399.05 723.903 Q1404.86 723.903 1407.91 728.509 Q1410.99 733.093 1410.99 741.843 Q1410.99 750.569 1407.91 755.176 Q1404.86 759.759 1399.05 759.759 Q1393.24 759.759 1390.16 755.176 Q1387.1 750.569 1387.1 741.843 Q1387.1 733.093 1390.16 728.509 Q1393.24 723.903 1399.05 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,703.088 170.867,47.2441 "/>
<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,684.956 189.764,684.956 "/>
<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,521.908 189.764,521.908 "/>
<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,358.861 189.764,358.861 "/>
<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,195.814 189.764,195.814 "/>
<path clip-path="url(#clip810)" d="M54.9921 685.407 L84.6679 685.407 L84.6679 689.342 L54.9921 689.342 L54.9921 685.407 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M98.7882 698.3 L115.108 698.3 L115.108 702.236 L93.1632 702.236 L93.1632 698.3 Q95.8252 695.546 100.409 690.916 Q105.015 686.263 106.196 684.921 Q108.441 682.398 109.321 680.662 Q110.223 678.902 110.223 677.213 Q110.223 674.458 108.279 672.722 Q106.358 670.986 103.256 670.986 Q101.057 670.986 98.603 671.75 Q96.1725 672.514 93.3947 674.064 L93.3947 669.342 Q96.2188 668.208 98.6724 667.629 Q101.126 667.051 103.163 667.051 Q108.534 667.051 111.728 669.736 Q114.922 672.421 114.922 676.912 Q114.922 679.041 114.112 680.963 Q113.325 682.861 111.219 685.453 Q110.64 686.125 107.538 689.342 Q104.436 692.537 98.7882 698.3 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M134.922 670.754 Q131.311 670.754 129.482 674.319 Q127.677 677.861 127.677 684.99 Q127.677 692.097 129.482 695.662 Q131.311 699.203 134.922 699.203 Q138.556 699.203 140.362 695.662 Q142.191 692.097 142.191 684.99 Q142.191 677.861 140.362 674.319 Q138.556 670.754 134.922 670.754 M134.922 667.051 Q140.732 667.051 143.788 671.657 Q146.867 676.24 146.867 684.99 Q146.867 693.717 143.788 698.324 Q140.732 702.907 134.922 702.907 Q129.112 702.907 126.033 698.324 Q122.978 693.717 122.978 684.99 Q122.978 676.24 126.033 671.657 Q129.112 667.051 134.922 667.051 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M54.9921 522.36 L84.6679 522.36 L84.6679 526.295 L54.9921 526.295 L54.9921 522.36 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M95.5706 535.253 L103.209 535.253 L103.209 508.888 L94.8993 510.554 L94.8993 506.295 L103.163 504.628 L107.839 504.628 L107.839 535.253 L115.478 535.253 L115.478 539.188 L95.5706 539.188 L95.5706 535.253 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M134.922 507.707 Q131.311 507.707 129.482 511.272 Q127.677 514.814 127.677 521.943 Q127.677 529.05 129.482 532.614 Q131.311 536.156 134.922 536.156 Q138.556 536.156 140.362 532.614 Q142.191 529.05 142.191 521.943 Q142.191 514.814 140.362 511.272 Q138.556 507.707 134.922 507.707 M134.922 504.003 Q140.732 504.003 143.788 508.61 Q146.867 513.193 146.867 521.943 Q146.867 530.67 143.788 535.276 Q140.732 539.86 134.922 539.86 Q129.112 539.86 126.033 535.276 Q122.978 530.67 122.978 521.943 Q122.978 513.193 126.033 508.61 Q129.112 504.003 134.922 504.003 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M134.922 344.66 Q131.311 344.66 129.482 348.225 Q127.677 351.766 127.677 358.896 Q127.677 366.002 129.482 369.567 Q131.311 373.109 134.922 373.109 Q138.556 373.109 140.362 369.567 Q142.191 366.002 142.191 358.896 Q142.191 351.766 140.362 348.225 Q138.556 344.66 134.922 344.66 M134.922 340.956 Q140.732 340.956 143.788 345.563 Q146.867 350.146 146.867 358.896 Q146.867 367.623 143.788 372.229 Q140.732 376.813 134.922 376.813 Q129.112 376.813 126.033 372.229 Q122.978 367.623 122.978 358.896 Q122.978 350.146 126.033 345.563 Q129.112 340.956 134.922 340.956 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M95.5706 209.159 L103.209 209.159 L103.209 182.793 L94.8993 184.46 L94.8993 180.201 L103.163 178.534 L107.839 178.534 L107.839 209.159 L115.478 209.159 L115.478 213.094 L95.5706 213.094 L95.5706 209.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M134.922 181.613 Q131.311 181.613 129.482 185.178 Q127.677 188.719 127.677 195.849 Q127.677 202.955 129.482 206.52 Q131.311 210.062 134.922 210.062 Q138.556 210.062 140.362 206.52 Q142.191 202.955 142.191 195.849 Q142.191 188.719 140.362 185.178 Q138.556 181.613 134.922 181.613 M134.922 177.909 Q140.732 177.909 143.788 182.516 Q146.867 187.099 146.867 195.849 Q146.867 204.576 143.788 209.182 Q140.732 213.765 134.922 213.765 Q129.112 213.765 126.033 209.182 Q122.978 204.576 122.978 195.849 Q122.978 187.099 126.033 182.516 Q129.112 177.909 134.922 177.909 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip812)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="964.931,65.8057 758.691,684.526 "/>
<path clip-path="url(#clip810)" d="M1275.29 172.786 L1506.69 172.786 L1506.69 69.1056 L1275.29 69.1056  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1275.29,172.786 1506.69,172.786 1506.69,69.1056 1275.29,69.1056 1275.29,172.786 "/>
<polyline clip-path="url(#clip810)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1290.64,120.946 1382.77,120.946 "/>
<path clip-path="url(#clip810)" d="M1398.12 103.666 L1402.84 103.666 L1410.11 132.878 L1417.36 103.666 L1422.61 103.666 L1429.88 132.878 L1437.13 103.666 L1441.87 103.666 L1433.19 138.226 L1427.31 138.226 L1420.02 108.226 L1412.66 138.226 L1406.78 138.226 L1398.12 103.666 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1456.64 125.193 Q1451.48 125.193 1449.49 126.374 Q1447.5 127.554 1447.5 130.402 Q1447.5 132.67 1448.98 134.013 Q1450.48 135.332 1453.05 135.332 Q1456.59 135.332 1458.72 132.832 Q1460.88 130.309 1460.88 126.142 L1460.88 125.193 L1456.64 125.193 M1465.14 123.434 L1465.14 138.226 L1460.88 138.226 L1460.88 134.29 Q1459.42 136.651 1457.24 137.786 Q1455.07 138.897 1451.92 138.897 Q1447.94 138.897 1445.57 136.675 Q1443.24 134.429 1443.24 130.679 Q1443.24 126.304 1446.15 124.082 Q1449.09 121.86 1454.9 121.86 L1460.88 121.86 L1460.88 121.443 Q1460.88 118.503 1458.93 116.906 Q1457.01 115.286 1453.51 115.286 Q1451.29 115.286 1449.19 115.818 Q1447.08 116.351 1445.14 117.415 L1445.14 113.48 Q1447.47 112.578 1449.67 112.138 Q1451.87 111.675 1453.95 111.675 Q1459.58 111.675 1462.36 114.591 Q1465.14 117.508 1465.14 123.434 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1473.91 102.207 L1478.17 102.207 L1478.17 138.226 L1473.91 138.226 L1473.91 102.207 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1487.08 102.207 L1491.34 102.207 L1491.34 138.226 L1487.08 138.226 L1487.08 102.207 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /></svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA o`persist_js_state·has_pluto_hook_features§cell_id$e45e1d36-1a12-11eb-2720-294c4be6e9fddepends_on_disabled_cells§runtimeUupublished_object_keysdepends_on_skipped_cells§errored$5501a700-19ec-11eb-0ded-53e41f7f821aqueued¤logsrunning¦outputbodyG<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="200" viewBox="0 0 1600 800">
<defs>
  <clipPath id="clip930">
    <rect x="0" y="0" width="1600" height="800"/>
  </clipPath>
</defs>
<path clip-path="url(#clip930)" d="M0 800 L1600 800 L1600 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip931">
    <rect x="320" y="0" width="1121" height="800"/>
  </clipPath>
</defs>
<path clip-path="url(#clip930)" d="M170.867 703.088 L1552.76 703.088 L1552.76 47.2441 L170.867 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip932">
    <rect x="170" y="47" width="1383" height="657"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip932)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="243.091,703.088 243.091,47.2441 "/>
<polyline clip-path="url(#clip932)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="552.451,703.088 552.451,47.2441 "/>
<polyline clip-path="url(#clip932)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="861.811,703.088 861.811,47.2441 "/>
<polyline clip-path="url(#clip932)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1171.17,703.088 1171.17,47.2441 "/>
<polyline clip-path="url(#clip932)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1480.53,703.088 1480.53,47.2441 "/>
<polyline clip-path="url(#clip932)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,684.526 1552.76,684.526 "/>
<polyline clip-path="url(#clip932)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,529.846 1552.76,529.846 "/>
<polyline clip-path="url(#clip932)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,375.166 1552.76,375.166 "/>
<polyline clip-path="url(#clip932)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,220.486 1552.76,220.486 "/>
<polyline clip-path="url(#clip932)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="170.867,65.8057 1552.76,65.8057 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,703.088 1552.76,703.088 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="243.091,703.088 243.091,684.19 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="552.451,703.088 552.451,684.19 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="861.811,703.088 861.811,684.19 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1171.17,703.088 1171.17,684.19 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1480.53,703.088 1480.53,684.19 "/>
<path clip-path="url(#clip930)" d="M197.153 742.259 L226.829 742.259 L226.829 746.194 L197.153 746.194 L197.153 742.259 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M249.769 728.602 L237.963 747.051 L249.769 747.051 L249.769 728.602 M248.542 724.528 L254.422 724.528 L254.422 747.051 L259.352 747.051 L259.352 750.94 L254.422 750.94 L254.422 759.088 L249.769 759.088 L249.769 750.94 L234.167 750.94 L234.167 746.426 L248.542 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M277.084 727.607 Q273.473 727.607 271.644 731.171 Q269.838 734.713 269.838 741.843 Q269.838 748.949 271.644 752.514 Q273.473 756.055 277.084 756.055 Q280.718 756.055 282.523 752.514 Q284.352 748.949 284.352 741.843 Q284.352 734.713 282.523 731.171 Q280.718 727.607 277.084 727.607 M277.084 723.903 Q282.894 723.903 285.949 728.509 Q289.028 733.093 289.028 741.843 Q289.028 750.569 285.949 755.176 Q282.894 759.759 277.084 759.759 Q271.273 759.759 268.195 755.176 Q265.139 750.569 265.139 741.843 Q265.139 733.093 268.195 728.509 Q271.273 723.903 277.084 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M506.514 742.259 L536.19 742.259 L536.19 746.194 L506.514 746.194 L506.514 742.259 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M550.31 755.153 L566.629 755.153 L566.629 759.088 L544.685 759.088 L544.685 755.153 Q547.347 752.398 551.93 747.768 Q556.537 743.116 557.717 741.773 Q559.963 739.25 560.842 737.514 Q561.745 735.755 561.745 734.065 Q561.745 731.31 559.8 729.574 Q557.879 727.838 554.777 727.838 Q552.578 727.838 550.125 728.602 Q547.694 729.366 544.916 730.917 L544.916 726.195 Q547.74 725.06 550.194 724.482 Q552.648 723.903 554.685 723.903 Q560.055 723.903 563.25 726.588 Q566.444 729.273 566.444 733.764 Q566.444 735.894 565.634 737.815 Q564.847 739.713 562.74 742.306 Q562.162 742.977 559.06 746.194 Q555.958 749.389 550.31 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M586.444 727.607 Q582.833 727.607 581.004 731.171 Q579.199 734.713 579.199 741.843 Q579.199 748.949 581.004 752.514 Q582.833 756.055 586.444 756.055 Q590.078 756.055 591.884 752.514 Q593.712 748.949 593.712 741.843 Q593.712 734.713 591.884 731.171 Q590.078 727.607 586.444 727.607 M586.444 723.903 Q592.254 723.903 595.31 728.509 Q598.388 733.093 598.388 741.843 Q598.388 750.569 595.31 755.176 Q592.254 759.759 586.444 759.759 Q580.634 759.759 577.555 755.176 Q574.499 750.569 574.499 741.843 Q574.499 733.093 577.555 728.509 Q580.634 723.903 586.444 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M861.811 727.607 Q858.2 727.607 856.371 731.171 Q854.566 734.713 854.566 741.843 Q854.566 748.949 856.371 752.514 Q858.2 756.055 861.811 756.055 Q865.446 756.055 867.251 752.514 Q869.08 748.949 869.08 741.843 Q869.08 734.713 867.251 731.171 Q865.446 727.607 861.811 727.607 M861.811 723.903 Q867.621 723.903 870.677 728.509 Q873.756 733.093 873.756 741.843 Q873.756 750.569 870.677 755.176 Q867.621 759.759 861.811 759.759 Q856.001 759.759 852.922 755.176 Q849.867 750.569 849.867 741.843 Q849.867 733.093 852.922 728.509 Q856.001 723.903 861.811 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M1149.94 755.153 L1166.26 755.153 L1166.26 759.088 L1144.32 759.088 L1144.32 755.153 Q1146.98 752.398 1151.57 747.768 Q1156.17 743.116 1157.35 741.773 Q1159.6 739.25 1160.48 737.514 Q1161.38 735.755 1161.38 734.065 Q1161.38 731.31 1159.44 729.574 Q1157.51 727.838 1154.41 727.838 Q1152.21 727.838 1149.76 728.602 Q1147.33 729.366 1144.55 730.917 L1144.55 726.195 Q1147.38 725.06 1149.83 724.482 Q1152.28 723.903 1154.32 723.903 Q1159.69 723.903 1162.88 726.588 Q1166.08 729.273 1166.08 733.764 Q1166.08 735.894 1165.27 737.815 Q1164.48 739.713 1162.38 742.306 Q1161.8 742.977 1158.69 746.194 Q1155.59 749.389 1149.94 755.153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M1186.08 727.607 Q1182.47 727.607 1180.64 731.171 Q1178.83 734.713 1178.83 741.843 Q1178.83 748.949 1180.64 752.514 Q1182.47 756.055 1186.08 756.055 Q1189.71 756.055 1191.52 752.514 Q1193.35 748.949 1193.35 741.843 Q1193.35 734.713 1191.52 731.171 Q1189.71 727.607 1186.08 727.607 M1186.08 723.903 Q1191.89 723.903 1194.94 728.509 Q1198.02 733.093 1198.02 741.843 Q1198.02 750.569 1194.94 755.176 Q1191.89 759.759 1186.08 759.759 Q1180.27 759.759 1177.19 755.176 Q1174.13 750.569 1174.13 741.843 Q1174.13 733.093 1177.19 728.509 Q1180.27 723.903 1186.08 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M1468.7 728.602 L1456.9 747.051 L1468.7 747.051 L1468.7 728.602 M1467.48 724.528 L1473.36 724.528 L1473.36 747.051 L1478.29 747.051 L1478.29 750.94 L1473.36 750.94 L1473.36 759.088 L1468.7 759.088 L1468.7 750.94 L1453.1 750.94 L1453.1 746.426 L1467.48 724.528 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M1496.02 727.607 Q1492.41 727.607 1490.58 731.171 Q1488.77 734.713 1488.77 741.843 Q1488.77 748.949 1490.58 752.514 Q1492.41 756.055 1496.02 756.055 Q1499.65 756.055 1501.46 752.514 Q1503.29 748.949 1503.29 741.843 Q1503.29 734.713 1501.46 731.171 Q1499.65 727.607 1496.02 727.607 M1496.02 723.903 Q1501.83 723.903 1504.88 728.509 Q1507.96 733.093 1507.96 741.843 Q1507.96 750.569 1504.88 755.176 Q1501.83 759.759 1496.02 759.759 Q1490.21 759.759 1487.13 755.176 Q1484.07 750.569 1484.07 741.843 Q1484.07 733.093 1487.13 728.509 Q1490.21 723.903 1496.02 723.903 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,703.088 170.867,47.2441 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,684.526 189.764,684.526 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,529.846 189.764,529.846 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,375.166 189.764,375.166 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,220.486 189.764,220.486 "/>
<polyline clip-path="url(#clip930)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="170.867,65.8057 189.764,65.8057 "/>
<path clip-path="url(#clip930)" d="M54.9921 684.978 L84.6679 684.978 L84.6679 688.913 L54.9921 688.913 L54.9921 684.978 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M98.7882 697.871 L115.108 697.871 L115.108 701.806 L93.1632 701.806 L93.1632 697.871 Q95.8252 695.116 100.409 690.487 Q105.015 685.834 106.196 684.492 Q108.441 681.968 109.321 680.232 Q110.223 678.473 110.223 676.783 Q110.223 674.029 108.279 672.293 Q106.358 670.556 103.256 670.556 Q101.057 670.556 98.603 671.32 Q96.1725 672.084 93.3947 673.635 L93.3947 668.913 Q96.2188 667.779 98.6724 667.2 Q101.126 666.621 103.163 666.621 Q108.534 666.621 111.728 669.306 Q114.922 671.992 114.922 676.482 Q114.922 678.612 114.112 680.533 Q113.325 682.431 111.219 685.024 Q110.64 685.695 107.538 688.913 Q104.436 692.107 98.7882 697.871 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M134.922 670.325 Q131.311 670.325 129.482 673.89 Q127.677 677.431 127.677 684.561 Q127.677 691.667 129.482 695.232 Q131.311 698.774 134.922 698.774 Q138.556 698.774 140.362 695.232 Q142.191 691.667 142.191 684.561 Q142.191 677.431 140.362 673.89 Q138.556 670.325 134.922 670.325 M134.922 666.621 Q140.732 666.621 143.788 671.228 Q146.867 675.811 146.867 684.561 Q146.867 693.288 143.788 697.894 Q140.732 702.478 134.922 702.478 Q129.112 702.478 126.033 697.894 Q122.978 693.288 122.978 684.561 Q122.978 675.811 126.033 671.228 Q129.112 666.621 134.922 666.621 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M54.9921 530.298 L84.6679 530.298 L84.6679 534.233 L54.9921 534.233 L54.9921 530.298 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M95.5706 543.191 L103.209 543.191 L103.209 516.825 L94.8993 518.492 L94.8993 514.233 L103.163 512.566 L107.839 512.566 L107.839 543.191 L115.478 543.191 L115.478 547.126 L95.5706 547.126 L95.5706 543.191 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M134.922 515.645 Q131.311 515.645 129.482 519.21 Q127.677 522.751 127.677 529.881 Q127.677 536.987 129.482 540.552 Q131.311 544.094 134.922 544.094 Q138.556 544.094 140.362 540.552 Q142.191 536.987 142.191 529.881 Q142.191 522.751 140.362 519.21 Q138.556 515.645 134.922 515.645 M134.922 511.941 Q140.732 511.941 143.788 516.548 Q146.867 521.131 146.867 529.881 Q146.867 538.608 143.788 543.214 Q140.732 547.797 134.922 547.797 Q129.112 547.797 126.033 543.214 Q122.978 538.608 122.978 529.881 Q122.978 521.131 126.033 516.548 Q129.112 511.941 134.922 511.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M134.922 360.965 Q131.311 360.965 129.482 364.529 Q127.677 368.071 127.677 375.201 Q127.677 382.307 129.482 385.872 Q131.311 389.414 134.922 389.414 Q138.556 389.414 140.362 385.872 Q142.191 382.307 142.191 375.201 Q142.191 368.071 140.362 364.529 Q138.556 360.965 134.922 360.965 M134.922 357.261 Q140.732 357.261 143.788 361.867 Q146.867 366.451 146.867 375.201 Q146.867 383.928 143.788 388.534 Q140.732 393.117 134.922 393.117 Q129.112 393.117 126.033 388.534 Q122.978 383.928 122.978 375.201 Q122.978 366.451 126.033 361.867 Q129.112 357.261 134.922 357.261 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M95.5706 233.831 L103.209 233.831 L103.209 207.465 L94.8993 209.132 L94.8993 204.873 L103.163 203.206 L107.839 203.206 L107.839 233.831 L115.478 233.831 L115.478 237.766 L95.5706 237.766 L95.5706 233.831 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M134.922 206.285 Q131.311 206.285 129.482 209.849 Q127.677 213.391 127.677 220.521 Q127.677 227.627 129.482 231.192 Q131.311 234.733 134.922 234.733 Q138.556 234.733 140.362 231.192 Q142.191 227.627 142.191 220.521 Q142.191 213.391 140.362 209.849 Q138.556 206.285 134.922 206.285 M134.922 202.581 Q140.732 202.581 143.788 207.187 Q146.867 211.771 146.867 220.521 Q146.867 229.247 143.788 233.854 Q140.732 238.437 134.922 238.437 Q129.112 238.437 126.033 233.854 Q122.978 229.247 122.978 220.521 Q122.978 211.771 126.033 207.187 Q129.112 202.581 134.922 202.581 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M98.7882 79.1505 L115.108 79.1505 L115.108 83.0857 L93.1632 83.0857 L93.1632 79.1505 Q95.8252 76.3959 100.409 71.7663 Q105.015 67.1136 106.196 65.771 Q108.441 63.2479 109.321 61.5118 Q110.223 59.7525 110.223 58.0627 Q110.223 55.3081 108.279 53.572 Q106.358 51.8359 103.256 51.8359 Q101.057 51.8359 98.603 52.5998 Q96.1725 53.3636 93.3947 54.9146 L93.3947 50.1924 Q96.2188 49.0581 98.6724 48.4794 Q101.126 47.9007 103.163 47.9007 Q108.534 47.9007 111.728 50.5859 Q114.922 53.2711 114.922 57.7618 Q114.922 59.8914 114.112 61.8127 Q113.325 63.7108 111.219 66.3034 Q110.64 66.9747 107.538 70.1923 Q104.436 73.3867 98.7882 79.1505 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip930)" d="M134.922 51.6044 Q131.311 51.6044 129.482 55.1692 Q127.677 58.7108 127.677 65.8404 Q127.677 72.9469 129.482 76.5117 Q131.311 80.0533 134.922 80.0533 Q138.556 80.0533 140.362 76.5117 Q142.191 72.9469 142.191 65.8404 Q142.191 58.7108 140.362 55.1692 Q138.556 51.6044 134.922 51.6044 M134.922 47.9007 Q140.732 47.9007 143.788 52.5072 Q146.867 57.0905 146.867 65.8404 Q146.867 74.5672 143.788 79.1737 Q140.732 83.757 134.922 83.757 Q129.112 83.757 126.033 79.1737 Q122.978 74.5672 122.978 65.8404 Q122.978 57.0905 126.033 52.5072 Q129.112 47.9007 134.922 47.9007 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip932)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1016.49,65.8057 1016.49,684.526 "/>
<polyline clip-path="url(#clip932)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="707.131,684.526 707.131,65.8057 "/>
<polyline clip-path="url(#clip932)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1171.17,529.846 552.451,529.846 "/>
<polyline clip-path="url(#clip932)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="552.451,220.486 1171.17,220.486 "/>
<polyline clip-path="url(#clip932)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1083.38,97.1491 887.727,684.119 "/>
<polyline clip-path="url(#clip932)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="908.215,375.166 942.803,444.341 "/>
<polyline clip-path="url(#clip932)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="942.803,417.508 942.803,444.341 921.337,428.241 "/>
<polyline clip-path="url(#clip932)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="942.803,444.341 908.215,375.166 "/>
<circle clip-path="url(#clip932)" cx="908.215" cy="375.166" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="1.6"/>
</svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA opersist_js_state·has_pluto_hook_features§cell_id$5501a700-19ec-11eb-0ded-53e41f7f821adepends_on_disabled_cells§runtime spublished_object_keysdepends_on_skipped_cells§errored$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89queued¤logsrunning¦outputbodyprefixMain.workspace#3.ObjectelementsprefixSphereelementscenterprefixFloat64elements7.0text/plain-6.0text/plaintypeArrayprefix_shortobjectidec1c81aae044f28a!application/vnd.pluto.tree+objectradius2text/plainior1.5text/plaintypestructprefix_shortSphereobjectidb59ae7be605c2d7c!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements10.0text/plain0.0text/plaintypeArrayprefix_shortobjectidfffdf189f71f6f9c!application/vnd.pluto.tree+objectnormalprefixFloat64elements-1.0text/plain0.0text/plaintypeArrayprefix_shortobjectid39926e9eea486b0d!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectidc629b1cc33955b09!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements-10.0text/plain0.0text/plaintypeArrayprefix_shortobjectid60daa3e938d8db59!application/vnd.pluto.tree+objectnormalprefixFloat64elements1.0text/plain0.0text/plaintypeArrayprefix_shortobjectid81633505f9e9ed06!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectid5ce0d0254772ca24!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements0.0text/plain-10.0text/plaintypeArrayprefix_shortobjectidda9ea7f12775ea2!application/vnd.pluto.tree+objectnormalprefixFloat64elements0.0text/plain1.0text/plaintypeArrayprefix_shortobjectid1c5e29cc2fe01ed4!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectid8949e5650f0de9e3!application/vnd.pluto.tree+objectprefixWallelementspositionprefixFloat64elements0.0text/plain10.0text/plaintypeArrayprefix_shortobjectid96efcd08a503199b!application/vnd.pluto.tree+objectnormalprefixFloat64elements0.0text/plain-1.0text/plaintypeArrayprefix_shortobjectid7965b9fe69eeef07!application/vnd.pluto.tree+objecttypestructprefix_shortWallobjectideb6ab8595af988d4!application/vnd.pluto.tree+objecttypeArrayprefix_shortobjectidcce090ff757a82c8mime!application/vnd.pluto.tree+objectrootassigneeex_3_scenelast_run_timestampA p7persist_js_state·has_pluto_hook_features§cell_id$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89depends_on_disabled_cells§runtimezhpublished_object_keysdepends_on_skipped_cells§errored$83aa9cea-1a0c-11eb-281d-699665da2b4fqueued¤logsrunning¦outputbodyȻ<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600">
<defs>
  <clipPath id="clip130">
    <rect x="0" y="0" width="2400" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip130)" d="M0 1600 L2400 1600 L2400 0 L0 0  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip131">
    <rect x="480" y="0" width="1681" height="1600"/>
  </clipPath>
</defs>
<path clip-path="url(#clip130)" d="M178.867 1486.45 L2352.76 1486.45 L2352.76 47.2441 L178.867 47.2441  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<defs>
  <clipPath id="clip132">
    <rect x="178" y="47" width="2175" height="1440"/>
  </clipPath>
</defs>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="247.507,1486.45 247.507,47.2441 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="586.942,1486.45 586.942,47.2441 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="926.376,1486.45 926.376,47.2441 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1265.81,1486.45 1265.81,47.2441 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1605.25,1486.45 1605.25,47.2441 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1944.68,1486.45 1944.68,47.2441 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2284.12,1486.45 2284.12,47.2441 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,1445.72 2352.76,1445.72 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,1106.28 2352.76,1106.28 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,766.846 2352.76,766.846 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,427.411 2352.76,427.411 "/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="178.867,87.9763 2352.76,87.9763 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1486.45 2352.76,1486.45 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="247.507,1486.45 247.507,1467.55 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="586.942,1486.45 586.942,1467.55 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="926.376,1486.45 926.376,1467.55 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1265.81,1486.45 1265.81,1467.55 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1605.25,1486.45 1605.25,1467.55 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1944.68,1486.45 1944.68,1467.55 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2284.12,1486.45 2284.12,1467.55 "/>
<path clip-path="url(#clip130)" d="M201.569 1532.02 L231.245 1532.02 L231.245 1535.95 L201.569 1535.95 L201.569 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M255.504 1530.21 Q258.861 1530.93 260.736 1533.2 Q262.634 1535.47 262.634 1538.8 Q262.634 1543.92 259.115 1546.72 Q255.597 1549.52 249.115 1549.52 Q246.94 1549.52 244.625 1549.08 Q242.333 1548.66 239.879 1547.81 L239.879 1543.29 Q241.824 1544.43 244.139 1545.01 Q246.453 1545.58 248.977 1545.58 Q253.375 1545.58 255.666 1543.85 Q257.981 1542.11 257.981 1538.8 Q257.981 1535.75 255.828 1534.03 Q253.699 1532.3 249.879 1532.3 L245.852 1532.3 L245.852 1528.45 L250.065 1528.45 Q253.514 1528.45 255.342 1527.09 Q257.171 1525.7 257.171 1523.11 Q257.171 1520.45 255.273 1519.03 Q253.398 1517.6 249.879 1517.6 Q247.958 1517.6 245.759 1518.01 Q243.56 1518.43 240.921 1519.31 L240.921 1515.14 Q243.583 1514.4 245.898 1514.03 Q248.236 1513.66 250.296 1513.66 Q255.62 1513.66 258.722 1516.09 Q261.824 1518.5 261.824 1522.62 Q261.824 1525.49 260.18 1527.48 Q258.537 1529.45 255.504 1530.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M281.5 1517.37 Q277.888 1517.37 276.06 1520.93 Q274.254 1524.47 274.254 1531.6 Q274.254 1538.71 276.06 1542.27 Q277.888 1545.82 281.5 1545.82 Q285.134 1545.82 286.939 1542.27 Q288.768 1538.71 288.768 1531.6 Q288.768 1524.47 286.939 1520.93 Q285.134 1517.37 281.5 1517.37 M281.5 1513.66 Q287.31 1513.66 290.365 1518.27 Q293.444 1522.85 293.444 1531.6 Q293.444 1540.33 290.365 1544.94 Q287.31 1549.52 281.5 1549.52 Q275.689 1549.52 272.611 1544.94 Q269.555 1540.33 269.555 1531.6 Q269.555 1522.85 272.611 1518.27 Q275.689 1513.66 281.5 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M541.004 1532.02 L570.68 1532.02 L570.68 1535.95 L541.004 1535.95 L541.004 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M584.8 1544.91 L601.12 1544.91 L601.12 1548.85 L579.175 1548.85 L579.175 1544.91 Q581.837 1542.16 586.421 1537.53 Q591.027 1532.88 592.208 1531.53 Q594.453 1529.01 595.333 1527.27 Q596.235 1525.51 596.235 1523.82 Q596.235 1521.07 594.291 1519.33 Q592.37 1517.6 589.268 1517.6 Q587.069 1517.6 584.615 1518.36 Q582.185 1519.13 579.407 1520.68 L579.407 1515.95 Q582.231 1514.82 584.685 1514.24 Q587.138 1513.66 589.175 1513.66 Q594.546 1513.66 597.74 1516.35 Q600.935 1519.03 600.935 1523.52 Q600.935 1525.65 600.124 1527.57 Q599.337 1529.47 597.231 1532.07 Q596.652 1532.74 593.55 1535.95 Q590.448 1539.15 584.8 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M620.934 1517.37 Q617.323 1517.37 615.495 1520.93 Q613.689 1524.47 613.689 1531.6 Q613.689 1538.71 615.495 1542.27 Q617.323 1545.82 620.934 1545.82 Q624.569 1545.82 626.374 1542.27 Q628.203 1538.71 628.203 1531.6 Q628.203 1524.47 626.374 1520.93 Q624.569 1517.37 620.934 1517.37 M620.934 1513.66 Q626.745 1513.66 629.8 1518.27 Q632.879 1522.85 632.879 1531.6 Q632.879 1540.33 629.8 1544.94 Q626.745 1549.52 620.934 1549.52 Q615.124 1549.52 612.046 1544.94 Q608.99 1540.33 608.99 1531.6 Q608.99 1522.85 612.046 1518.27 Q615.124 1513.66 620.934 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M880.439 1532.02 L910.115 1532.02 L910.115 1535.95 L880.439 1535.95 L880.439 1532.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M921.018 1544.91 L928.656 1544.91 L928.656 1518.55 L920.346 1520.21 L920.346 1515.95 L928.61 1514.29 L933.286 1514.29 L933.286 1544.91 L940.925 1544.91 L940.925 1548.85 L921.018 1548.85 L921.018 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M960.369 1517.37 Q956.758 1517.37 954.93 1520.93 Q953.124 1524.47 953.124 1531.6 Q953.124 1538.71 954.93 1542.27 Q956.758 1545.82 960.369 1545.82 Q964.004 1545.82 965.809 1542.27 Q967.638 1538.71 967.638 1531.6 Q967.638 1524.47 965.809 1520.93 Q964.004 1517.37 960.369 1517.37 M960.369 1513.66 Q966.179 1513.66 969.235 1518.27 Q972.314 1522.85 972.314 1531.6 Q972.314 1540.33 969.235 1544.94 Q966.179 1549.52 960.369 1549.52 Q954.559 1549.52 951.48 1544.94 Q948.425 1540.33 948.425 1531.6 Q948.425 1522.85 951.48 1518.27 Q954.559 1513.66 960.369 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1265.81 1517.37 Q1262.2 1517.37 1260.37 1520.93 Q1258.57 1524.47 1258.57 1531.6 Q1258.57 1538.71 1260.37 1542.27 Q1262.2 1545.82 1265.81 1545.82 Q1269.45 1545.82 1271.25 1542.27 Q1273.08 1538.71 1273.08 1531.6 Q1273.08 1524.47 1271.25 1520.93 Q1269.45 1517.37 1265.81 1517.37 M1265.81 1513.66 Q1271.62 1513.66 1274.68 1518.27 Q1277.76 1522.85 1277.76 1531.6 Q1277.76 1540.33 1274.68 1544.94 Q1271.62 1549.52 1265.81 1549.52 Q1260 1549.52 1256.92 1544.94 Q1253.87 1540.33 1253.87 1531.6 Q1253.87 1522.85 1256.92 1518.27 Q1260 1513.66 1265.81 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1579.93 1544.91 L1587.57 1544.91 L1587.57 1518.55 L1579.26 1520.21 L1579.26 1515.95 L1587.53 1514.29 L1592.2 1514.29 L1592.2 1544.91 L1599.84 1544.91 L1599.84 1548.85 L1579.93 1548.85 L1579.93 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1619.29 1517.37 Q1615.67 1517.37 1613.85 1520.93 Q1612.04 1524.47 1612.04 1531.6 Q1612.04 1538.71 1613.85 1542.27 Q1615.67 1545.82 1619.29 1545.82 Q1622.92 1545.82 1624.73 1542.27 Q1626.55 1538.71 1626.55 1531.6 Q1626.55 1524.47 1624.73 1520.93 Q1622.92 1517.37 1619.29 1517.37 M1619.29 1513.66 Q1625.1 1513.66 1628.15 1518.27 Q1631.23 1522.85 1631.23 1531.6 Q1631.23 1540.33 1628.15 1544.94 Q1625.1 1549.52 1619.29 1549.52 Q1613.48 1549.52 1610.4 1544.94 Q1607.34 1540.33 1607.34 1531.6 Q1607.34 1522.85 1610.4 1518.27 Q1613.48 1513.66 1619.29 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1923.45 1544.91 L1939.77 1544.91 L1939.77 1548.85 L1917.83 1548.85 L1917.83 1544.91 Q1920.49 1542.16 1925.07 1537.53 Q1929.68 1532.88 1930.86 1531.53 Q1933.11 1529.01 1933.99 1527.27 Q1934.89 1525.51 1934.89 1523.82 Q1934.89 1521.07 1932.94 1519.33 Q1931.02 1517.6 1927.92 1517.6 Q1925.72 1517.6 1923.27 1518.36 Q1920.84 1519.13 1918.06 1520.68 L1918.06 1515.95 Q1920.88 1514.82 1923.34 1514.24 Q1925.79 1513.66 1927.83 1513.66 Q1933.2 1513.66 1936.39 1516.35 Q1939.59 1519.03 1939.59 1523.52 Q1939.59 1525.65 1938.78 1527.57 Q1937.99 1529.47 1935.88 1532.07 Q1935.31 1532.74 1932.2 1535.95 Q1929.1 1539.15 1923.45 1544.91 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1959.59 1517.37 Q1955.98 1517.37 1954.15 1520.93 Q1952.34 1524.47 1952.34 1531.6 Q1952.34 1538.71 1954.15 1542.27 Q1955.98 1545.82 1959.59 1545.82 Q1963.22 1545.82 1965.03 1542.27 Q1966.86 1538.71 1966.86 1531.6 Q1966.86 1524.47 1965.03 1520.93 Q1963.22 1517.37 1959.59 1517.37 M1959.59 1513.66 Q1965.4 1513.66 1968.45 1518.27 Q1971.53 1522.85 1971.53 1531.6 Q1971.53 1540.33 1968.45 1544.94 Q1965.4 1549.52 1959.59 1549.52 Q1953.78 1549.52 1950.7 1544.94 Q1947.64 1540.33 1947.64 1531.6 Q1947.64 1522.85 1950.7 1518.27 Q1953.78 1513.66 1959.59 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2272.96 1530.21 Q2276.31 1530.93 2278.19 1533.2 Q2280.09 1535.47 2280.09 1538.8 Q2280.09 1543.92 2276.57 1546.72 Q2273.05 1549.52 2266.57 1549.52 Q2264.39 1549.52 2262.08 1549.08 Q2259.79 1548.66 2257.33 1547.81 L2257.33 1543.29 Q2259.28 1544.43 2261.59 1545.01 Q2263.91 1545.58 2266.43 1545.58 Q2270.83 1545.58 2273.12 1543.85 Q2275.44 1542.11 2275.44 1538.8 Q2275.44 1535.75 2273.28 1534.03 Q2271.15 1532.3 2267.33 1532.3 L2263.31 1532.3 L2263.31 1528.45 L2267.52 1528.45 Q2270.97 1528.45 2272.8 1527.09 Q2274.63 1525.7 2274.63 1523.11 Q2274.63 1520.45 2272.73 1519.03 Q2270.85 1517.6 2267.33 1517.6 Q2265.41 1517.6 2263.21 1518.01 Q2261.01 1518.43 2258.38 1519.31 L2258.38 1515.14 Q2261.04 1514.4 2263.35 1514.03 Q2265.69 1513.66 2267.75 1513.66 Q2273.07 1513.66 2276.18 1516.09 Q2279.28 1518.5 2279.28 1522.62 Q2279.28 1525.49 2277.63 1527.48 Q2275.99 1529.45 2272.96 1530.21 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2298.95 1517.37 Q2295.34 1517.37 2293.51 1520.93 Q2291.71 1524.47 2291.71 1531.6 Q2291.71 1538.71 2293.51 1542.27 Q2295.34 1545.82 2298.95 1545.82 Q2302.59 1545.82 2304.39 1542.27 Q2306.22 1538.71 2306.22 1531.6 Q2306.22 1524.47 2304.39 1520.93 Q2302.59 1517.37 2298.95 1517.37 M2298.95 1513.66 Q2304.76 1513.66 2307.82 1518.27 Q2310.9 1522.85 2310.9 1531.6 Q2310.9 1540.33 2307.82 1544.94 Q2304.76 1549.52 2298.95 1549.52 Q2293.14 1549.52 2290.06 1544.94 Q2287.01 1540.33 2287.01 1531.6 Q2287.01 1522.85 2290.06 1518.27 Q2293.14 1513.66 2298.95 1513.66 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1486.45 178.867,47.2441 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1445.72 197.764,1445.72 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,1106.28 197.764,1106.28 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,766.846 197.764,766.846 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,427.411 197.764,427.411 "/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="178.867,87.9763 197.764,87.9763 "/>
<path clip-path="url(#clip130)" d="M50.9921 1446.17 L80.6679 1446.17 L80.6679 1450.1 L50.9921 1450.1 L50.9921 1446.17 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M94.7882 1459.06 L111.108 1459.06 L111.108 1463 L89.1632 1463 L89.1632 1459.06 Q91.8252 1456.31 96.4085 1451.68 Q101.015 1447.02 102.196 1445.68 Q104.441 1443.16 105.321 1441.42 Q106.223 1439.66 106.223 1437.97 Q106.223 1435.22 104.279 1433.48 Q102.358 1431.75 99.2558 1431.75 Q97.0567 1431.75 94.603 1432.51 Q92.1725 1433.27 89.3947 1434.82 L89.3947 1430.1 Q92.2188 1428.97 94.6724 1428.39 Q97.1261 1427.81 99.1632 1427.81 Q104.534 1427.81 107.728 1430.5 Q110.922 1433.18 110.922 1437.67 Q110.922 1439.8 110.112 1441.72 Q109.325 1443.62 107.219 1446.21 Q106.64 1446.88 103.538 1450.1 Q100.436 1453.3 94.7882 1459.06 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M130.922 1431.51 Q127.311 1431.51 125.482 1435.08 Q123.677 1438.62 123.677 1445.75 Q123.677 1452.86 125.482 1456.42 Q127.311 1459.96 130.922 1459.96 Q134.556 1459.96 136.362 1456.42 Q138.191 1452.86 138.191 1445.75 Q138.191 1438.62 136.362 1435.08 Q134.556 1431.51 130.922 1431.51 M130.922 1427.81 Q136.732 1427.81 139.788 1432.42 Q142.867 1437 142.867 1445.75 Q142.867 1454.48 139.788 1459.08 Q136.732 1463.67 130.922 1463.67 Q125.112 1463.67 122.033 1459.08 Q118.978 1454.48 118.978 1445.75 Q118.978 1437 122.033 1432.42 Q125.112 1427.81 130.922 1427.81 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M50.9921 1106.73 L80.6679 1106.73 L80.6679 1110.67 L50.9921 1110.67 L50.9921 1106.73 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M91.5706 1119.63 L99.2095 1119.63 L99.2095 1093.26 L90.8993 1094.93 L90.8993 1090.67 L99.1632 1089 L103.839 1089 L103.839 1119.63 L111.478 1119.63 L111.478 1123.56 L91.5706 1123.56 L91.5706 1119.63 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M130.922 1092.08 Q127.311 1092.08 125.482 1095.64 Q123.677 1099.19 123.677 1106.32 Q123.677 1113.42 125.482 1116.99 Q127.311 1120.53 130.922 1120.53 Q134.556 1120.53 136.362 1116.99 Q138.191 1113.42 138.191 1106.32 Q138.191 1099.19 136.362 1095.64 Q134.556 1092.08 130.922 1092.08 M130.922 1088.38 Q136.732 1088.38 139.788 1092.98 Q142.867 1097.57 142.867 1106.32 Q142.867 1115.04 139.788 1119.65 Q136.732 1124.23 130.922 1124.23 Q125.112 1124.23 122.033 1119.65 Q118.978 1115.04 118.978 1106.32 Q118.978 1097.57 122.033 1092.98 Q125.112 1088.38 130.922 1088.38 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M130.922 752.645 Q127.311 752.645 125.482 756.209 Q123.677 759.751 123.677 766.881 Q123.677 773.987 125.482 777.552 Q127.311 781.094 130.922 781.094 Q134.556 781.094 136.362 777.552 Q138.191 773.987 138.191 766.881 Q138.191 759.751 136.362 756.209 Q134.556 752.645 130.922 752.645 M130.922 748.941 Q136.732 748.941 139.788 753.547 Q142.867 758.131 142.867 766.881 Q142.867 775.608 139.788 780.214 Q136.732 784.797 130.922 784.797 Q125.112 784.797 122.033 780.214 Q118.978 775.608 118.978 766.881 Q118.978 758.131 122.033 753.547 Q125.112 748.941 130.922 748.941 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M91.5706 440.756 L99.2095 440.756 L99.2095 414.39 L90.8993 416.057 L90.8993 411.798 L99.1632 410.131 L103.839 410.131 L103.839 440.756 L111.478 440.756 L111.478 444.691 L91.5706 444.691 L91.5706 440.756 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M130.922 413.21 Q127.311 413.21 125.482 416.775 Q123.677 420.316 123.677 427.446 Q123.677 434.552 125.482 438.117 Q127.311 441.659 130.922 441.659 Q134.556 441.659 136.362 438.117 Q138.191 434.552 138.191 427.446 Q138.191 420.316 136.362 416.775 Q134.556 413.21 130.922 413.21 M130.922 409.506 Q136.732 409.506 139.788 414.113 Q142.867 418.696 142.867 427.446 Q142.867 436.173 139.788 440.779 Q136.732 445.362 130.922 445.362 Q125.112 445.362 122.033 440.779 Q118.978 436.173 118.978 427.446 Q118.978 418.696 122.033 414.113 Q125.112 409.506 130.922 409.506 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M94.7882 101.321 L111.108 101.321 L111.108 105.256 L89.1632 105.256 L89.1632 101.321 Q91.8252 98.5665 96.4085 93.9369 Q101.015 89.2841 102.196 87.9416 Q104.441 85.4184 105.321 83.6823 Q106.223 81.9231 106.223 80.2333 Q106.223 77.4786 104.279 75.7425 Q102.358 74.0064 99.2558 74.0064 Q97.0567 74.0064 94.603 74.7703 Q92.1725 75.5342 89.3947 77.0851 L89.3947 72.3629 Q92.2188 71.2287 94.6724 70.65 Q97.1261 70.0713 99.1632 70.0713 Q104.534 70.0713 107.728 72.7565 Q110.922 75.4416 110.922 79.9323 Q110.922 82.062 110.112 83.9832 Q109.325 85.8814 107.219 88.474 Q106.64 89.1453 103.538 92.3628 Q100.436 95.5573 94.7882 101.321 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M130.922 73.775 Q127.311 73.775 125.482 77.3398 Q123.677 80.8814 123.677 88.011 Q123.677 95.1174 125.482 98.6822 Q127.311 102.224 130.922 102.224 Q134.556 102.224 136.362 98.6822 Q138.191 95.1174 138.191 88.011 Q138.191 80.8814 136.362 77.3398 Q134.556 73.775 130.922 73.775 M130.922 70.0713 Q136.732 70.0713 139.788 74.6777 Q142.867 79.261 142.867 88.011 Q142.867 96.7378 139.788 101.344 Q136.732 105.928 130.922 105.928 Q125.112 105.928 122.033 101.344 Q118.978 96.7378 118.978 88.011 Q118.978 79.261 122.033 74.6777 Q125.112 70.0713 130.922 70.0713 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip132)" d="M1571.3 970.507 L1570.75 961.826 L1569.08 953.287 L1566.34 945.031 L1562.57 937.194 L1557.82 929.903 L1552.18 923.279 L1545.74 917.431 L1538.61 912.454 L1530.9 908.43 L1522.73 905.426 L1514.25 903.49 L1505.59 902.655 L1496.9 902.934 L1488.31 904.322 L1479.97 906.797 L1472.02 910.318 L1464.58 914.828 L1457.78 920.252 L1451.72 926.501 L1446.52 933.472 L1442.25 941.052 L1438.99 949.115 L1436.78 957.53 L1435.67 966.157 L1435.67 974.856 L1436.78 983.484 L1438.99 991.899 L1442.25 999.962 L1446.52 1007.54 L1451.72 1014.51 L1457.78 1020.76 L1464.58 1026.19 L1472.02 1030.7 L1479.97 1034.22 L1488.31 1036.69 L1496.9 1038.08 L1505.59 1038.36 L1514.25 1037.52 L1522.73 1035.59 L1530.9 1032.58 L1538.61 1028.56 L1545.74 1023.58 L1552.18 1017.73 L1557.82 1011.11 L1562.57 1003.82 L1566.34 995.983 L1569.08 987.727 L1570.75 979.188 L1571.3 970.507 L1571.3 970.507  Z" fill="#009af9" fill-rule="evenodd" fill-opacity="0.2"/>
<polyline clip-path="url(#clip132)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1571.3,970.507 1570.75,961.826 1569.08,953.287 1566.34,945.031 1562.57,937.194 1557.82,929.903 1552.18,923.279 1545.74,917.431 1538.61,912.454 1530.9,908.43 1522.73,905.426 1514.25,903.49 1505.59,902.655 1496.9,902.934 1488.31,904.322 1479.97,906.797 1472.02,910.318 1464.58,914.828 1457.78,920.252 1451.72,926.501 1446.52,933.472 1442.25,941.052 1438.99,949.115 1436.78,957.53 1435.67,966.157 1435.67,974.856 1436.78,983.484 1438.99,991.899 1442.25,999.962 1446.52,1007.54 1451.72,1014.51 1457.78,1020.76 1464.58,1026.19 1472.02,1030.7 1479.97,1034.22 1488.31,1036.69 1496.9,1038.08 1505.59,1038.36 1514.25,1037.52 1522.73,1035.59 1530.9,1032.58 1538.61,1028.56 1545.74,1023.58 1552.18,1017.73 1557.82,1011.11 1562.57,1003.82 1566.34,995.983 1569.08,987.727 1570.75,979.188 1571.3,970.507 "/>
<polyline clip-path="url(#clip132)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1605.25,87.9763 1605.25,1445.72 "/>
<polyline clip-path="url(#clip132)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="926.376,1445.72 926.376,87.9763 "/>
<polyline clip-path="url(#clip132)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1944.68,1106.28 586.942,1106.28 "/>
<polyline clip-path="url(#clip132)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="586.942,427.411 1944.68,427.411 "/>
<polyline clip-path="url(#clip132)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1367.64,766.846 1428.36,888.286 "/>
<polyline clip-path="url(#clip132)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1428.36,848.037 1428.36,888.286 1396.16,864.136 "/>
<polyline clip-path="url(#clip132)" style="stroke:#8b0000; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="1428.36,888.286 1367.64,766.846 "/>
<circle clip-path="url(#clip132)" cx="1367.64" cy="766.846" r="10.8" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<circle clip-path="url(#clip132)" cx="1449.11" cy="929.775" r="14.4" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/>
<path clip-path="url(#clip130)" d="M1650.71 509.938 L2280.29 509.938 L2280.29 95.2176 L1650.71 95.2176  Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1650.71,509.938 2280.29,509.938 2280.29,95.2176 1650.71,95.2176 1650.71,509.938 "/>
<path clip-path="url(#clip130)" d="M1674.86 167.794 L1819.79 167.794 L1819.79 126.322 L1674.86 126.322 L1674.86 167.794  Z" fill="#009af9" fill-rule="evenodd" fill-opacity="0.2"/>
<polyline clip-path="url(#clip130)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1674.86,167.794 1819.79,167.794 1819.79,126.322 1674.86,126.322 1674.86,167.794 "/>
<path clip-path="url(#clip130)" d="M1866.19 130.912 L1866.19 135.472 Q1863.52 134.199 1861.16 133.574 Q1858.8 132.949 1856.6 132.949 Q1852.78 132.949 1850.7 134.43 Q1848.64 135.912 1848.64 138.643 Q1848.64 140.935 1850.01 142.115 Q1851.4 143.273 1855.24 143.99 L1858.06 144.569 Q1863.29 145.565 1865.77 148.088 Q1868.27 150.588 1868.27 154.801 Q1868.27 159.824 1864.89 162.416 Q1861.53 165.009 1855.03 165.009 Q1852.58 165.009 1849.8 164.453 Q1847.04 163.898 1844.08 162.81 L1844.08 157.995 Q1846.93 159.592 1849.66 160.402 Q1852.39 161.213 1855.03 161.213 Q1859.03 161.213 1861.21 159.639 Q1863.39 158.064 1863.39 155.148 Q1863.39 152.602 1861.81 151.166 Q1860.26 149.731 1856.7 149.014 L1853.85 148.458 Q1848.62 147.416 1846.28 145.194 Q1843.94 142.972 1843.94 139.014 Q1843.94 134.43 1847.16 131.791 Q1850.4 129.153 1856.07 129.153 Q1858.5 129.153 1861.02 129.592 Q1863.55 130.032 1866.19 130.912 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1879.5 160.449 L1879.5 174.199 L1875.21 174.199 L1875.21 138.412 L1879.5 138.412 L1879.5 142.347 Q1880.84 140.032 1882.88 138.921 Q1884.94 137.787 1887.78 137.787 Q1892.51 137.787 1895.45 141.537 Q1898.41 145.287 1898.41 151.398 Q1898.41 157.509 1895.45 161.259 Q1892.51 165.009 1887.78 165.009 Q1884.94 165.009 1882.88 163.898 Q1880.84 162.763 1879.5 160.449 M1893.99 151.398 Q1893.99 146.699 1892.04 144.037 Q1890.12 141.352 1886.74 141.352 Q1883.36 141.352 1881.42 144.037 Q1879.5 146.699 1879.5 151.398 Q1879.5 156.097 1881.42 158.782 Q1883.36 161.444 1886.74 161.444 Q1890.12 161.444 1892.04 158.782 Q1893.99 156.097 1893.99 151.398 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1927.02 148.689 L1927.02 164.338 L1922.76 164.338 L1922.76 148.828 Q1922.76 145.148 1921.33 143.319 Q1919.89 141.49 1917.02 141.49 Q1913.57 141.49 1911.58 143.69 Q1909.59 145.889 1909.59 149.685 L1909.59 164.338 L1905.31 164.338 L1905.31 128.319 L1909.59 128.319 L1909.59 142.44 Q1911.12 140.102 1913.18 138.944 Q1915.26 137.787 1917.97 137.787 Q1922.44 137.787 1924.73 140.565 Q1927.02 143.319 1927.02 148.689 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1957.69 150.31 L1957.69 152.393 L1938.11 152.393 Q1938.39 156.791 1940.75 159.106 Q1943.13 161.398 1947.37 161.398 Q1949.82 161.398 1952.11 160.796 Q1954.43 160.194 1956.7 158.99 L1956.7 163.018 Q1954.4 163.99 1952 164.5 Q1949.59 165.009 1947.11 165.009 Q1940.91 165.009 1937.27 161.398 Q1933.66 157.787 1933.66 151.629 Q1933.66 145.264 1937.09 141.537 Q1940.54 137.787 1946.37 137.787 Q1951.6 137.787 1954.64 141.166 Q1957.69 144.523 1957.69 150.31 M1953.43 149.06 Q1953.39 145.565 1951.46 143.481 Q1949.57 141.398 1946.42 141.398 Q1942.85 141.398 1940.7 143.412 Q1938.57 145.426 1938.25 149.083 L1953.43 149.06 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1979.7 142.393 Q1978.99 141.977 1978.13 141.791 Q1977.3 141.583 1976.28 141.583 Q1972.67 141.583 1970.72 143.944 Q1968.8 146.282 1968.8 150.68 L1968.8 164.338 L1964.52 164.338 L1964.52 138.412 L1968.8 138.412 L1968.8 142.44 Q1970.14 140.078 1972.3 138.944 Q1974.45 137.787 1977.53 137.787 Q1977.97 137.787 1978.5 137.856 Q1979.03 137.903 1979.68 138.018 L1979.7 142.393 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2005.31 150.31 L2005.31 152.393 L1985.72 152.393 Q1986 156.791 1988.36 159.106 Q1990.75 161.398 1994.98 161.398 Q1997.44 161.398 1999.73 160.796 Q2002.04 160.194 2004.31 158.99 L2004.31 163.018 Q2002.02 163.99 1999.61 164.5 Q1997.2 165.009 1994.73 165.009 Q1988.52 165.009 1984.89 161.398 Q1981.28 157.787 1981.28 151.629 Q1981.28 145.264 1984.7 141.537 Q1988.15 137.787 1993.99 137.787 Q1999.22 137.787 2002.25 141.166 Q2005.31 144.523 2005.31 150.31 M2001.05 149.06 Q2001 145.565 1999.08 143.481 Q1997.18 141.398 1994.03 141.398 Q1990.47 141.398 1988.32 143.412 Q1986.19 145.426 1985.86 149.083 L2001.05 149.06 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip130)" style="stroke:#e26f46; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1674.86,198.898 1819.79,198.898 "/>
<path clip-path="url(#clip130)" d="M1843.94 181.618 L1848.66 181.618 L1855.93 210.83 L1863.18 181.618 L1868.43 181.618 L1875.7 210.83 L1882.95 181.618 L1887.69 181.618 L1879.01 216.178 L1873.13 216.178 L1865.84 186.178 L1858.48 216.178 L1852.6 216.178 L1843.94 181.618 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1902.46 203.145 Q1897.3 203.145 1895.31 204.326 Q1893.32 205.506 1893.32 208.354 Q1893.32 210.622 1894.8 211.965 Q1896.3 213.284 1898.87 213.284 Q1902.41 213.284 1904.54 210.784 Q1906.7 208.261 1906.7 204.094 L1906.7 203.145 L1902.46 203.145 M1910.96 201.386 L1910.96 216.178 L1906.7 216.178 L1906.7 212.242 Q1905.24 214.603 1903.06 215.738 Q1900.89 216.849 1897.74 216.849 Q1893.76 216.849 1891.4 214.627 Q1889.06 212.381 1889.06 208.631 Q1889.06 204.256 1891.97 202.034 Q1894.91 199.812 1900.72 199.812 L1906.7 199.812 L1906.7 199.395 Q1906.7 196.455 1904.75 194.858 Q1902.83 193.238 1899.33 193.238 Q1897.11 193.238 1895.01 193.77 Q1892.9 194.303 1890.96 195.367 L1890.96 191.432 Q1893.29 190.53 1895.49 190.09 Q1897.69 189.627 1899.77 189.627 Q1905.4 189.627 1908.18 192.543 Q1910.96 195.46 1910.96 201.386 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1919.73 180.159 L1923.99 180.159 L1923.99 216.178 L1919.73 216.178 L1919.73 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1932.9 180.159 L1937.16 180.159 L1937.16 216.178 L1932.9 216.178 L1932.9 180.159 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip130)" style="stroke:#3da44d; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1674.86,250.738 1819.79,250.738 "/>
<path clip-path="url(#clip130)" d="M1843.94 233.458 L1848.66 233.458 L1855.93 262.67 L1863.18 233.458 L1868.43 233.458 L1875.7 262.67 L1882.95 233.458 L1887.69 233.458 L1879.01 268.018 L1873.13 268.018 L1865.84 238.018 L1858.48 268.018 L1852.6 268.018 L1843.94 233.458 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1902.46 254.985 Q1897.3 254.985 1895.31 256.166 Q1893.32 257.346 1893.32 260.194 Q1893.32 262.462 1894.8 263.805 Q1896.3 265.124 1898.87 265.124 Q1902.41 265.124 1904.54 262.624 Q1906.7 260.101 1906.7 255.934 L1906.7 254.985 L1902.46 254.985 M1910.96 253.226 L1910.96 268.018 L1906.7 268.018 L1906.7 264.082 Q1905.24 266.443 1903.06 267.578 Q1900.89 268.689 1897.74 268.689 Q1893.76 268.689 1891.4 266.467 Q1889.06 264.221 1889.06 260.471 Q1889.06 256.096 1891.97 253.874 Q1894.91 251.652 1900.72 251.652 L1906.7 251.652 L1906.7 251.235 Q1906.7 248.295 1904.75 246.698 Q1902.83 245.078 1899.33 245.078 Q1897.11 245.078 1895.01 245.61 Q1892.9 246.143 1890.96 247.207 L1890.96 243.272 Q1893.29 242.37 1895.49 241.93 Q1897.69 241.467 1899.77 241.467 Q1905.4 241.467 1908.18 244.383 Q1910.96 247.3 1910.96 253.226 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1919.73 231.999 L1923.99 231.999 L1923.99 268.018 L1919.73 268.018 L1919.73 231.999 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1932.9 231.999 L1937.16 231.999 L1937.16 268.018 L1932.9 268.018 L1932.9 231.999 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip130)" style="stroke:#c271d2; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1674.86,302.578 1819.79,302.578 "/>
<path clip-path="url(#clip130)" d="M1843.94 285.298 L1848.66 285.298 L1855.93 314.51 L1863.18 285.298 L1868.43 285.298 L1875.7 314.51 L1882.95 285.298 L1887.69 285.298 L1879.01 319.858 L1873.13 319.858 L1865.84 289.858 L1858.48 319.858 L1852.6 319.858 L1843.94 285.298 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1902.46 306.825 Q1897.3 306.825 1895.31 308.006 Q1893.32 309.186 1893.32 312.034 Q1893.32 314.302 1894.8 315.645 Q1896.3 316.964 1898.87 316.964 Q1902.41 316.964 1904.54 314.464 Q1906.7 311.941 1906.7 307.774 L1906.7 306.825 L1902.46 306.825 M1910.96 305.066 L1910.96 319.858 L1906.7 319.858 L1906.7 315.922 Q1905.24 318.283 1903.06 319.418 Q1900.89 320.529 1897.74 320.529 Q1893.76 320.529 1891.4 318.307 Q1889.06 316.061 1889.06 312.311 Q1889.06 307.936 1891.97 305.714 Q1894.91 303.492 1900.72 303.492 L1906.7 303.492 L1906.7 303.075 Q1906.7 300.135 1904.75 298.538 Q1902.83 296.918 1899.33 296.918 Q1897.11 296.918 1895.01 297.45 Q1892.9 297.983 1890.96 299.047 L1890.96 295.112 Q1893.29 294.21 1895.49 293.77 Q1897.69 293.307 1899.77 293.307 Q1905.4 293.307 1908.18 296.223 Q1910.96 299.14 1910.96 305.066 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1919.73 283.839 L1923.99 283.839 L1923.99 319.858 L1919.73 319.858 L1919.73 283.839 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1932.9 283.839 L1937.16 283.839 L1937.16 319.858 L1932.9 319.858 L1932.9 283.839 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip130)" style="stroke:#ac8d18; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1674.86,354.418 1819.79,354.418 "/>
<path clip-path="url(#clip130)" d="M1843.94 337.138 L1848.66 337.138 L1855.93 366.35 L1863.18 337.138 L1868.43 337.138 L1875.7 366.35 L1882.95 337.138 L1887.69 337.138 L1879.01 371.698 L1873.13 371.698 L1865.84 341.698 L1858.48 371.698 L1852.6 371.698 L1843.94 337.138 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1902.46 358.665 Q1897.3 358.665 1895.31 359.846 Q1893.32 361.026 1893.32 363.874 Q1893.32 366.142 1894.8 367.485 Q1896.3 368.804 1898.87 368.804 Q1902.41 368.804 1904.54 366.304 Q1906.7 363.781 1906.7 359.614 L1906.7 358.665 L1902.46 358.665 M1910.96 356.906 L1910.96 371.698 L1906.7 371.698 L1906.7 367.762 Q1905.24 370.123 1903.06 371.258 Q1900.89 372.369 1897.74 372.369 Q1893.76 372.369 1891.4 370.147 Q1889.06 367.901 1889.06 364.151 Q1889.06 359.776 1891.97 357.554 Q1894.91 355.332 1900.72 355.332 L1906.7 355.332 L1906.7 354.915 Q1906.7 351.975 1904.75 350.378 Q1902.83 348.758 1899.33 348.758 Q1897.11 348.758 1895.01 349.29 Q1892.9 349.823 1890.96 350.887 L1890.96 346.952 Q1893.29 346.05 1895.49 345.61 Q1897.69 345.147 1899.77 345.147 Q1905.4 345.147 1908.18 348.063 Q1910.96 350.98 1910.96 356.906 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1919.73 335.679 L1923.99 335.679 L1923.99 371.698 L1919.73 371.698 L1919.73 335.679 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1932.9 335.679 L1937.16 335.679 L1937.16 371.698 L1932.9 371.698 L1932.9 335.679 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip130)" cx="1747.32" cy="406.258" r="19.7486" fill="#8b0000" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="5.85143"/>
<path clip-path="url(#clip130)" d="M1848.62 392.82 L1848.62 405.806 L1854.5 405.806 Q1857.76 405.806 1859.54 404.116 Q1861.33 402.427 1861.33 399.302 Q1861.33 396.2 1859.54 394.51 Q1857.76 392.82 1854.5 392.82 L1848.62 392.82 M1843.94 388.978 L1854.5 388.978 Q1860.31 388.978 1863.27 391.616 Q1866.26 394.232 1866.26 399.302 Q1866.26 404.417 1863.27 407.033 Q1860.31 409.649 1854.5 409.649 L1848.62 409.649 L1848.62 423.538 L1843.94 423.538 L1843.94 388.978 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1893.9 407.889 L1893.9 423.538 L1889.64 423.538 L1889.64 408.028 Q1889.64 404.348 1888.2 402.519 Q1886.77 400.69 1883.9 400.69 Q1880.45 400.69 1878.46 402.89 Q1876.46 405.089 1876.46 408.885 L1876.46 423.538 L1872.18 423.538 L1872.18 387.519 L1876.46 387.519 L1876.46 401.64 Q1877.99 399.302 1880.05 398.144 Q1882.14 396.987 1884.84 396.987 Q1889.31 396.987 1891.6 399.765 Q1893.9 402.519 1893.9 407.889 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1902.39 397.612 L1906.65 397.612 L1906.65 423.538 L1902.39 423.538 L1902.39 397.612 M1902.39 387.519 L1906.65 387.519 L1906.65 392.913 L1902.39 392.913 L1902.39 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1915.56 387.519 L1919.82 387.519 L1919.82 423.538 L1915.56 423.538 L1915.56 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1928.73 397.612 L1932.99 397.612 L1932.99 423.538 L1928.73 423.538 L1928.73 397.612 M1928.73 387.519 L1932.99 387.519 L1932.99 392.913 L1928.73 392.913 L1928.73 387.519 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1946.02 419.649 L1946.02 433.399 L1941.74 433.399 L1941.74 397.612 L1946.02 397.612 L1946.02 401.547 Q1947.37 399.232 1949.4 398.121 Q1951.46 396.987 1954.31 396.987 Q1959.03 396.987 1961.97 400.737 Q1964.94 404.487 1964.94 410.598 Q1964.94 416.709 1961.97 420.459 Q1959.03 424.209 1954.31 424.209 Q1951.46 424.209 1949.4 423.098 Q1947.37 421.963 1946.02 419.649 M1960.52 410.598 Q1960.52 405.899 1958.57 403.237 Q1956.65 400.552 1953.27 400.552 Q1949.89 400.552 1947.95 403.237 Q1946.02 405.899 1946.02 410.598 Q1946.02 415.297 1947.95 417.982 Q1949.89 420.644 1953.27 420.644 Q1956.65 420.644 1958.57 417.982 Q1960.52 415.297 1960.52 410.598 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><circle clip-path="url(#clip130)" cx="1747.32" cy="458.098" r="20.48" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="4.55111"/>
<path clip-path="url(#clip130)" d="M1843.94 440.818 L1848.62 440.818 L1848.62 475.378 L1843.94 475.378 L1843.94 440.818 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1879.29 459.729 L1879.29 475.378 L1875.03 475.378 L1875.03 459.868 Q1875.03 456.188 1873.59 454.359 Q1872.16 452.53 1869.29 452.53 Q1865.84 452.53 1863.85 454.73 Q1861.86 456.929 1861.86 460.725 L1861.86 475.378 L1857.58 475.378 L1857.58 449.452 L1861.86 449.452 L1861.86 453.48 Q1863.39 451.142 1865.45 449.984 Q1867.53 448.827 1870.24 448.827 Q1874.71 448.827 1877 451.605 Q1879.29 454.359 1879.29 459.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1892 442.091 L1892 449.452 L1900.77 449.452 L1900.77 452.762 L1892 452.762 L1892 466.836 Q1892 470.007 1892.85 470.91 Q1893.73 471.813 1896.4 471.813 L1900.77 471.813 L1900.77 475.378 L1896.4 475.378 Q1891.46 475.378 1889.59 473.549 Q1887.71 471.697 1887.71 466.836 L1887.71 452.762 L1884.59 452.762 L1884.59 449.452 L1887.71 449.452 L1887.71 442.091 L1892 442.091 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1928.55 461.35 L1928.55 463.433 L1908.96 463.433 Q1909.24 467.831 1911.6 470.146 Q1913.99 472.438 1918.22 472.438 Q1920.68 472.438 1922.97 471.836 Q1925.28 471.234 1927.55 470.03 L1927.55 474.058 Q1925.26 475.03 1922.85 475.54 Q1920.45 476.049 1917.97 476.049 Q1911.77 476.049 1908.13 472.438 Q1904.52 468.827 1904.52 462.669 Q1904.52 456.304 1907.95 452.577 Q1911.4 448.827 1917.23 448.827 Q1922.46 448.827 1925.49 452.206 Q1928.55 455.563 1928.55 461.35 M1924.29 460.1 Q1924.24 456.605 1922.32 454.521 Q1920.42 452.438 1917.27 452.438 Q1913.71 452.438 1911.56 454.452 Q1909.43 456.466 1909.1 460.123 L1924.29 460.1 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1950.56 453.433 Q1949.84 453.017 1948.99 452.831 Q1948.15 452.623 1947.14 452.623 Q1943.52 452.623 1941.58 454.984 Q1939.66 457.322 1939.66 461.72 L1939.66 475.378 L1935.38 475.378 L1935.38 449.452 L1939.66 449.452 L1939.66 453.48 Q1941 451.118 1943.15 449.984 Q1945.31 448.827 1948.39 448.827 Q1948.83 448.827 1949.36 448.896 Q1949.89 448.943 1950.54 449.058 L1950.56 453.433 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M1971.56 450.216 L1971.56 454.243 Q1969.75 453.317 1967.81 452.855 Q1965.86 452.392 1963.78 452.392 Q1960.61 452.392 1959.01 453.364 Q1957.44 454.336 1957.44 456.28 Q1957.44 457.762 1958.57 458.618 Q1959.71 459.452 1963.13 460.216 L1964.59 460.54 Q1969.13 461.512 1971.02 463.294 Q1972.95 465.054 1972.95 468.225 Q1972.95 471.836 1970.08 473.942 Q1967.23 476.049 1962.23 476.049 Q1960.14 476.049 1957.88 475.632 Q1955.63 475.239 1953.13 474.428 L1953.13 470.03 Q1955.49 471.257 1957.78 471.882 Q1960.08 472.484 1962.32 472.484 Q1965.33 472.484 1966.95 471.466 Q1968.57 470.424 1968.57 468.549 Q1968.57 466.813 1967.39 465.887 Q1966.23 464.961 1962.27 464.104 L1960.79 463.757 Q1956.83 462.924 1955.08 461.211 Q1953.32 459.475 1953.32 456.466 Q1953.32 452.808 1955.91 450.818 Q1958.5 448.827 1963.27 448.827 Q1965.63 448.827 1967.71 449.174 Q1969.8 449.521 1971.56 450.216 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2001.9 461.35 L2001.9 463.433 L1982.32 463.433 Q1982.6 467.831 1984.96 470.146 Q1987.34 472.438 1991.58 472.438 Q1994.03 472.438 1996.33 471.836 Q1998.64 471.234 2000.91 470.03 L2000.91 474.058 Q1998.62 475.03 1996.21 475.54 Q1993.8 476.049 1991.33 476.049 Q1985.12 476.049 1981.49 472.438 Q1977.88 468.827 1977.88 462.669 Q1977.88 456.304 1981.3 452.577 Q1984.75 448.827 1990.58 448.827 Q1995.82 448.827 1998.85 452.206 Q2001.9 455.563 2001.9 461.35 M1997.64 460.1 Q1997.6 456.605 1995.68 454.521 Q1993.78 452.438 1990.63 452.438 Q1987.07 452.438 1984.91 454.452 Q1982.78 456.466 1982.46 460.123 L1997.64 460.1 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2027.55 450.447 L2027.55 454.429 Q2025.75 453.433 2023.92 452.947 Q2022.11 452.438 2020.26 452.438 Q2016.12 452.438 2013.83 455.077 Q2011.53 457.692 2011.53 462.438 Q2011.53 467.183 2013.83 469.822 Q2016.12 472.438 2020.26 472.438 Q2022.11 472.438 2023.92 471.952 Q2025.75 471.442 2027.55 470.447 L2027.55 474.382 Q2025.77 475.216 2023.85 475.632 Q2021.95 476.049 2019.8 476.049 Q2013.94 476.049 2010.49 472.368 Q2007.04 468.688 2007.04 462.438 Q2007.04 456.095 2010.51 452.461 Q2014.01 448.827 2020.08 448.827 Q2022.04 448.827 2023.92 449.243 Q2025.79 449.637 2027.55 450.447 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2039.17 442.091 L2039.17 449.452 L2047.95 449.452 L2047.95 452.762 L2039.17 452.762 L2039.17 466.836 Q2039.17 470.007 2040.03 470.91 Q2040.91 471.813 2043.57 471.813 L2047.95 471.813 L2047.95 475.378 L2043.57 475.378 Q2038.64 475.378 2036.76 473.549 Q2034.89 471.697 2034.89 466.836 L2034.89 452.762 L2031.76 452.762 L2031.76 449.452 L2034.89 449.452 L2034.89 442.091 L2039.17 442.091 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2053.55 449.452 L2057.81 449.452 L2057.81 475.378 L2053.55 475.378 L2053.55 449.452 M2053.55 439.359 L2057.81 439.359 L2057.81 444.753 L2053.55 444.753 L2053.55 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2076.76 452.438 Q2073.34 452.438 2071.35 455.123 Q2069.36 457.785 2069.36 462.438 Q2069.36 467.091 2071.32 469.776 Q2073.32 472.438 2076.76 472.438 Q2080.17 472.438 2082.16 469.753 Q2084.15 467.067 2084.15 462.438 Q2084.15 457.831 2082.16 455.146 Q2080.17 452.438 2076.76 452.438 M2076.76 448.827 Q2082.32 448.827 2085.49 452.438 Q2088.66 456.049 2088.66 462.438 Q2088.66 468.804 2085.49 472.438 Q2082.32 476.049 2076.76 476.049 Q2071.19 476.049 2068.01 472.438 Q2064.87 468.804 2064.87 462.438 Q2064.87 456.049 2068.01 452.438 Q2071.19 448.827 2076.76 448.827 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2117.27 459.729 L2117.27 475.378 L2113.01 475.378 L2113.01 459.868 Q2113.01 456.188 2111.58 454.359 Q2110.14 452.53 2107.27 452.53 Q2103.82 452.53 2101.83 454.73 Q2099.84 456.929 2099.84 460.725 L2099.84 475.378 L2095.56 475.378 L2095.56 449.452 L2099.84 449.452 L2099.84 453.48 Q2101.37 451.142 2103.43 449.984 Q2105.51 448.827 2108.22 448.827 Q2112.69 448.827 2114.98 451.605 Q2117.27 454.359 2117.27 459.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2144.96 471.489 L2144.96 485.239 L2140.68 485.239 L2140.68 449.452 L2144.96 449.452 L2144.96 453.387 Q2146.3 451.072 2148.34 449.961 Q2150.4 448.827 2153.25 448.827 Q2157.97 448.827 2160.91 452.577 Q2163.87 456.327 2163.87 462.438 Q2163.87 468.549 2160.91 472.299 Q2157.97 476.049 2153.25 476.049 Q2150.4 476.049 2148.34 474.938 Q2146.3 473.803 2144.96 471.489 M2159.45 462.438 Q2159.45 457.739 2157.5 455.077 Q2155.58 452.392 2152.2 452.392 Q2148.82 452.392 2146.88 455.077 Q2144.96 457.739 2144.96 462.438 Q2144.96 467.137 2146.88 469.822 Q2148.82 472.484 2152.2 472.484 Q2155.58 472.484 2157.5 469.822 Q2159.45 467.137 2159.45 462.438 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2180.98 452.438 Q2177.55 452.438 2175.56 455.123 Q2173.57 457.785 2173.57 462.438 Q2173.57 467.091 2175.54 469.776 Q2177.53 472.438 2180.98 472.438 Q2184.38 472.438 2186.37 469.753 Q2188.36 467.067 2188.36 462.438 Q2188.36 457.831 2186.37 455.146 Q2184.38 452.438 2180.98 452.438 M2180.98 448.827 Q2186.53 448.827 2189.7 452.438 Q2192.88 456.049 2192.88 462.438 Q2192.88 468.804 2189.7 472.438 Q2186.53 476.049 2180.98 476.049 Q2175.4 476.049 2172.23 472.438 Q2169.08 468.804 2169.08 462.438 Q2169.08 456.049 2172.23 452.438 Q2175.4 448.827 2180.98 448.827 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2199.94 449.452 L2204.19 449.452 L2204.19 475.378 L2199.94 475.378 L2199.94 449.452 M2199.94 439.359 L2204.19 439.359 L2204.19 444.753 L2199.94 444.753 L2199.94 439.359 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2234.66 459.729 L2234.66 475.378 L2230.4 475.378 L2230.4 459.868 Q2230.4 456.188 2228.96 454.359 Q2227.53 452.53 2224.66 452.53 Q2221.21 452.53 2219.22 454.73 Q2217.23 456.929 2217.23 460.725 L2217.23 475.378 L2212.94 475.378 L2212.94 449.452 L2217.23 449.452 L2217.23 453.48 Q2218.75 451.142 2220.81 449.984 Q2222.9 448.827 2225.61 448.827 Q2230.07 448.827 2232.37 451.605 Q2234.66 454.359 2234.66 459.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip130)" d="M2247.37 442.091 L2247.37 449.452 L2256.14 449.452 L2256.14 452.762 L2247.37 452.762 L2247.37 466.836 Q2247.37 470.007 2248.22 470.91 Q2249.1 471.813 2251.76 471.813 L2256.14 471.813 L2256.14 475.378 L2251.76 475.378 Q2246.83 475.378 2244.96 473.549 Q2243.08 471.697 2243.08 466.836 L2243.08 452.762 L2239.96 452.762 L2239.96 449.452 L2243.08 449.452 L2243.08 442.091 L2247.37 442.091 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /></svg>
mimeimage/svg+xmlrootassigneelast_run_timestampA pIpersist_js_state·has_pluto_hook_features§cell_id$83aa9cea-1a0c-11eb-281d-699665da2b4fdepends_on_disabled_cells§runtime zpublished_object_keysdepends_on_skipped_cells§errored$900d6622-1a08-11eb-1475-bfadc2aac749queued¤logsrunning¦outputbody&trace (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA pȂ˰persist_js_state·has_pluto_hook_features§cell_id$900d6622-1a08-11eb-1475-bfadc2aac749depends_on_disabled_cells§runtime ;published_object_keysdepends_on_skipped_cells§errored$14dc73d2-1a0d-11eb-1a3c-0f793e74da9bqueued¤logsrunning¦outputbody(refract (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA p;ְpersist_js_state·has_pluto_hook_features§cell_id$14dc73d2-1a0d-11eb-1a3c-0f793e74da9bdepends_on_disabled_cells§runtime 'published_object_keysdepends_on_skipped_cells§errored$1a43b70c-1ca3-11eb-12a5-a94ebbba0e86queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA gFmpersist_js_state·has_pluto_hook_features§cell_id$1a43b70c-1ca3-11eb-12a5-a94ebbba0e86depends_on_disabled_cells§runtime7published_object_keysdepends_on_skipped_cells§errored$abe3de54-1ca0-11eb-01cd-11fe798bfb97queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA gCհpersist_js_state·has_pluto_hook_features§cell_id$abe3de54-1ca0-11eb-01cd-11fe798bfb97depends_on_disabled_cells§runtime:published_object_keysdepends_on_skipped_cells§errored±cell_dependencies $aa19faa4-1941-11eb-2b61-9b78aaf42876precedence_heuristic	cell_id$aa19faa4-1941-11eb-2b61-9b78aaf42876downstream_cells_mapintersection$038d5e88-1ac7-11eb-2020-a9d7e19feebc$a306e880-19eb-11eb-0ff1-d7ef49777f63$1b0c0e4c-1c73-11eb-225d-23c731455755$754eeec4-1a07-11eb-1329-8d9ae0948613$251f0262-1a0c-11eb-39a3-09be67091dc8upstream_cells_map<Intersection$8018fbf0-1a05-11eb-3032-95aae07ca78fMiss$8acef4b0-1a09-11eb-068d-79a259244ed1Wall$99c61b74-1941-11eb-2323-2bdb7c120a28intersection_distance$f76ab794-1ac9-11eb-26e3-b9d0baa05d49>isless+*Photon$24b0d4ba-192c-11eb-0f66-e77b544b0510$d851a202-1ca0-11eb-3da0-51fcb656783cprecedence_heuristic	cell_id$d851a202-1ca0-11eb-3da0-51fcb656783cdownstream_cells_mapObject$99c61b74-1941-11eb-2323-2bdb7c120a28$eff9329e-1a05-11eb-261f-734127d36750$8018fbf0-1a05-11eb-3032-95aae07ca78f$754eeec4-1a07-11eb-1329-8d9ae0948613$76ef6e46-1a06-11eb-03e3-9f40a86dc9aa$900d6622-1a08-11eb-1475-bfadc2aac749$3aa539ce-193f-11eb-2a0f-bbc6b83528b7upstream_cells_map$392c25b8-1add-11eb-225d-49cfca27bef4precedence_heuristic	cell_id$392c25b8-1add-11eb-225d-49cfca27bef4downstream_cells_mapupstream_cells_map@md_strgetindex$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150precedence_heuristic	cell_id$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150downstream_cells_maptest_lens$83acf10e-1c9e-11eb-3426-bb28e7bc6c79$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7eupstream_cells_mapSphere$3aa539ce-193f-11eb-2a0f-bbc6b83528b7$83acf10e-1c9e-11eb-3426-bb28e7bc6c79precedence_heuristic	cell_id$83acf10e-1c9e-11eb-3426-bb28e7bc6c79downstream_cells_mapupstream_cells_map:accumulatetest_lens_photon$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8first|>as_svgstep_ray$76ef6e46-1a06-11eb-03e3-9f40a86dc9aabox_scene$d257a728-1a04-11eb-281d-bde30644f5f5plot!lastplot_scene$eff9329e-1a05-11eb-261f-734127d36750test_lens$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150$2a2b7284-1ade-11eb-3b71-d17fe2ca638aprecedence_heuristic	cell_id$2a2b7284-1ade-11eb-3b71-d17fe2ca638adownstream_cells_mapupstream_cells_mapexample_sphere$e5c0e960-19cc-11eb-107d-39b397a783abplot_scene$eff9329e-1a05-11eb-261f-734127d36750$bc10541e-1ac3-11eb-0b5f-916922f1a8e8precedence_heuristic	cell_id$bc10541e-1ac3-11eb-0b5f-916922f1a8e8downstream_cells_mapupstream_cells_maptest_intersection_1$9df1d0f2-1ac3-11eb-0eac-d90eccca669ctypeof$f83da7f8-1acc-11eb-02d7-f33ffe518531precedence_heuristic	cell_id$f83da7f8-1acc-11eb-02d7-f33ffe518531downstream_cells_mapupstream_cells_mapaberration_viz$bff04784-1acc-11eb-36c2-9335a58be23aaberration_viz_ior$eb35ac4a-1acc-11eb-0729-ff85c8406c45$76ef6e46-1a06-11eb-03e3-9f40a86dc9aaprecedence_heuristic	cell_id$76ef6e46-1a06-11eb-03e3-9f40a86dc9aadownstream_cells_mapstep_ray$900d6622-1a08-11eb-1475-bfadc2aac749$83acf10e-1c9e-11eb-3426-bb28e7bc6c79$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7e$bff04784-1acc-11eb-36c2-9335a58be23aupstream_cells_mapclosest_hit$754eeec4-1a07-11eb-1329-8d9ae0948613Object$d851a202-1ca0-11eb-3da0-51fcb656783cPhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510interact$e70b9e24-1a07-11eb-13db-b95c07880893$e1cb1622-1a0c-11eb-224c-559af7b90f49Vector$c492a1f8-1a0c-11eb-2c38-5921c39cf5f8precedence_heuristic	cell_id$c492a1f8-1a0c-11eb-2c38-5921c39cf5f8downstream_cells_mapsphere_test_ray_N$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7eupstream_cells_mapCoreBase:PlutoRunner.create_bondPlutoRunnerCore.applicable@bindBase.getSlider$eabca8ce-1c73-11eb-26ad-271f6eba889bprecedence_heuristic	cell_id$eabca8ce-1c73-11eb-26ad-271f6eba889bdownstream_cells_mapplot_photon_arrow!$76d4351c-1c78-11eb-243f-5f6f5e485d5d$3663bf80-1a06-11eb-3596-8fbbed28cc38$5501a700-19ec-11eb-0ded-53e41f7f821a$e055262c-1c73-11eb-14de-2f537a19b012$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5$fb70cc0c-1c7f-11eb-31b5-87b168a66e19$1ee0787e-1a08-11eb-233b-43a654f70117$83aa9cea-1a0c-11eb-281d-699665da2b4fupstream_cells_map:first+*lastPhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510plot!scatter!nothing$24b0d4ba-192c-11eb-0f66-e77b544b0510precedence_heuristic	cell_id$24b0d4ba-192c-11eb-0f66-e77b544b0510downstream_cells_mapPhoton $925e98d4-1c78-11eb-230d-994518f0060e$eabca8ce-1c73-11eb-26ad-271f6eba889b$f76ab794-1ac9-11eb-26e3-b9d0baa05d49$0787f130-1aca-11eb-24b4-2ff2ddd0bc48$aa19faa4-1941-11eb-2b61-9b78aaf42876$038d5e88-1ac7-11eb-2020-a9d7e19feebc$6544be90-19d3-11eb-153c-218025f738c6$55187168-1c78-11eb-1182-ab4336b577a4$754eeec4-1a07-11eb-1329-8d9ae0948613$e70b9e24-1a07-11eb-13db-b95c07880893$76ef6e46-1a06-11eb-03e3-9f40a86dc9aa$900d6622-1a08-11eb-1475-bfadc2aac749$885ac814-1953-11eb-30d9-85dcd198a1d8$e1cb1622-1a0c-11eb-224c-559af7b90f49$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8$bff04784-1acc-11eb-36c2-9335a58be23aupstream_cells_mapRealFloat64Vector$1e109620-19c4-11eb-013e-1bc95c14c2baprecedence_heuristic	cell_id$1e109620-19c4-11eb-013e-1bc95c14c2badownstream_cells_mapupstream_cells_map@md_strgetindex$af5c6bea-1c9c-11eb-35ae-250337e4fc86precedence_heuristic	cell_id$af5c6bea-1c9c-11eb-35ae-250337e4fc86downstream_cells_maptest_sphere$251f0262-1a0c-11eb-39a3-09be67091dc8$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89upstream_cells_mapSphere$3aa539ce-193f-11eb-2a0f-bbc6b83528b7$6fdf613c-193f-11eb-0029-957541d2ed4dprecedence_heuristic	cell_id$6fdf613c-193f-11eb-0029-957541d2ed4ddownstream_cells_mapsphere_normal_at$e1cb1622-1a0c-11eb-224c-559af7b90f49upstream_cells_mapSphere$3aa539ce-193f-11eb-2a0f-bbc6b83528b7normalize-Float64Vector$ec57b460-19c3-11eb-2142-07cf28dcf02bprecedence_heuristic	cell_id$ec57b460-19c3-11eb-2142-07cf28dcf02bdownstream_cells_mapkeep_working$0e9a240c-1ac5-11eb-1a7e-b3c43c459484$0787f130-1aca-11eb-24b4-2ff2ddd0bc48$038d5e88-1ac7-11eb-2020-a9d7e19feebcupstream_cells_map@md_strMarkdown.AdmonitionMarkdown.MDMarkdowngetindex$e2a8d1d6-1add-11eb-0da1-cda1492a950cprecedence_heuristic	cell_id$e2a8d1d6-1add-11eb-0da1-cda1492a950cdownstream_cells_mapupstream_cells_map@md_strgetindex$2c6defd0-1ca1-11eb-17db-d5cb498f3265precedence_heuristic	cell_id$2c6defd0-1ca1-11eb-17db-d5cb498f3265downstream_cells_mapupstream_cells_map$3f727a2c-1c80-11eb-3608-e55ccb9786d9precedence_heuristic	cell_id$3f727a2c-1c80-11eb-3608-e55ccb9786d9downstream_cells_mapupstream_cells_map@md_strgetindex$d39f149e-1ac3-11eb-39a2-41c2030d7d49precedence_heuristic	cell_id$d39f149e-1ac3-11eb-39a2-41c2030d7d49downstream_cells_mapupstream_cells_map@md_strgetindex$d70380a4-1ad0-11eb-1184-f7e9b84a83adprecedence_heuristic	cell_id$d70380a4-1ad0-11eb-1184-f7e9b84a83addownstream_cells_mapupstream_cells_map@md_strBase.getindexBaseBase.Docs.HTML@html_str$aa43ef1c-1941-11eb-04de-552719a08da0precedence_heuristic	cell_id$aa43ef1c-1941-11eb-04de-552719a08da0downstream_cells_mapupstream_cells_map@md_strBase.getindexBaseBase.Docs.HTML@html_str$7478330a-1c81-11eb-2f9f-099f1111032cprecedence_heuristic	cell_id$7478330a-1c81-11eb-2f9f-099f1111032cdownstream_cells_mapupstream_cells_map@md_strgetindex$bff04784-1acc-11eb-36c2-9335a58be23aprecedence_heuristic	cell_id$bff04784-1acc-11eb-36c2-9335a58be23adownstream_cells_mapaberration_viz$f83da7f8-1acc-11eb-02d7-f33ffe518531upstream_cells_map:accumulateSphere$3aa539ce-193f-11eb-2a0f-bbc6b83528b7LinRangefirst|>Photon$24b0d4ba-192c-11eb-0f66-e77b544b0510as_svgstep_ray$76ef6e46-1a06-11eb-03e3-9f40a86dc9aabox_scene$d257a728-1a04-11eb-281d-bde30644f5f5plot!lastplot_scene$eff9329e-1a05-11eb-261f-734127d36750$c3090e4a-1a09-11eb-0f32-d3bbfd9992e0precedence_heuristic	cell_id$c3090e4a-1a09-11eb-0f32-d3bbfd9992e0downstream_cells_mapupstream_cells_mapall_intersections$1b0c0e4c-1c73-11eb-225d-23c731455755sort$5f551588-1ac4-11eb-1f86-197442f1ef1dprecedence_heuristic	cell_id$5f551588-1ac4-11eb-1f86-197442f1ef1ddownstream_cells_mapupstream_cells_map@md_strgetindex$584ce620-1935-11eb-177a-f75d9ad8a399precedence_heuristic	cell_id$584ce620-1935-11eb-177a-f75d9ad8a399downstream_cells_mapupstream_cells_map@md_strBase.getindexBaseBase.Docs.HTML@html_strRemoteResource=>$c00eb0a6-cab2-11ea-3887-070ebd8d56e2precedence_heuristic	cell_id$c00eb0a6-cab2-11ea-3887-070ebd8d56e2downstream_cells_mapupstream_cells_map@md_strgetindex$7f286ccc-1c75-11eb-1270-95a87840b300precedence_heuristic	cell_id$7f286ccc-1c75-11eb-1270-95a87840b300downstream_cells_mapdizzy_angle$6544be90-19d3-11eb-153c-218025f738c6upstream_cells_mapCore:Base.get@bindSliderBasePlutoRunnerPlutoRunner.create_bondCore.applicableπ*$0787f130-1aca-11eb-24b4-2ff2ddd0bc48precedence_heuristic	cell_id$0787f130-1aca-11eb-24b4-2ff2ddd0bc48downstream_cells_mapupstream_cells_map @md_strMissingnormalize>!islessPhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510still_missing$ec4abc12-19c3-11eb-1ca4-b5e9d3cd100bRealisa<Wall$99c61b74-1941-11eb-2323-2bdb7c120a28-keep_working$ec57b460-19c3-11eb-2142-07cf28dcf02bintersection_distance$f76ab794-1ac9-11eb-26e3-b9d0baa05d49correct$ec698eb0-19c3-11eb-340a-e319abb8ebb5absgetindex$ec5d59b0-19c3-11eb-0206-cbd1a5415c28precedence_heuristic	cell_id$ec5d59b0-19c3-11eb-0206-cbd1a5415c28downstream_cells_mapyays$ec698eb0-19c3-11eb-340a-e319abb8ebb5upstream_cells_map@md_strgetindex$f76ab794-1ac9-11eb-26e3-b9d0baa05d49precedence_heuristic	cell_id$f76ab794-1ac9-11eb-26e3-b9d0baa05d49downstream_cells_mapintersection_distance$0787f130-1aca-11eb-24b4-2ff2ddd0bc48$aa19faa4-1941-11eb-2b61-9b78aaf42876upstream_cells_mapdotWall$99c61b74-1941-11eb-2323-2bdb7c120a28-/Photon$24b0d4ba-192c-11eb-0f66-e77b544b0510$e1cb1622-1a0c-11eb-224c-559af7b90f49precedence_heuristic	cell_id$e1cb1622-1a0c-11eb-224c-559af7b90f49downstream_cells_mapinteract$0b03316c-1c80-11eb-347c-1b5c9a0ae379$76ef6e46-1a06-11eb-03e3-9f40a86dc9aaupstream_cells_mapIntersection$8018fbf0-1a05-11eb-3032-95aae07ca78frefract$14dc73d2-1a0d-11eb-1a3c-0f793e74da9bSphere$3aa539ce-193f-11eb-2a0f-bbc6b83528b7Photon$24b0d4ba-192c-11eb-0f66-e77b544b0510==sphere_normal_at$6fdf613c-193f-11eb-0029-957541d2ed4d$dad5acfa-194c-11eb-27f9-01f40342a681precedence_heuristic	cell_id$dad5acfa-194c-11eb-27f9-01f40342a681downstream_cells_mapupstream_cells_map@md_strgetindex$3cd36ac0-1a09-11eb-1818-75b36e67594aprecedence_heuristic	cell_id$3cd36ac0-1a09-11eb-1818-75b36e67594adownstream_cells_mapmirror_test_ray_N$1ee0787e-1a08-11eb-233b-43a654f70117upstream_cells_mapCoreBase:PlutoRunner.create_bondPlutoRunnerCore.applicable@bindBase.getSlider$55187168-1c78-11eb-1182-ab4336b577a4precedence_heuristic	cell_id$55187168-1c78-11eb-1182-ab4336b577a4downstream_cells_mapphilip$5501a700-19ec-11eb-0ded-53e41f7f821a$1b0c0e4c-1c73-11eb-225d-23c731455755$e055262c-1c73-11eb-14de-2f537a19b012$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5$0b03316c-1c80-11eb-347c-1b5c9a0ae379$fb70cc0c-1c7f-11eb-31b5-87b168a66e19$1ee0787e-1a08-11eb-233b-43a654f70117$251f0262-1a0c-11eb-39a3-09be67091dc8$83aa9cea-1a0c-11eb-281d-699665da2b4fupstream_cells_mapnormalizePhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510$b6614d80-194b-11eb-1edb-dba3c29672f8precedence_heuristic	cell_id$b6614d80-194b-11eb-1edb-dba3c29672f8downstream_cells_mapupstream_cells_map@md_strgetindex$e055262c-1c73-11eb-14de-2f537a19b012precedence_heuristic	cell_id$e055262c-1c73-11eb-14de-2f537a19b012downstream_cells_mapupstream_cells_mapex_1_scene$2158a356-1a05-11eb-3f5b-4dfa810fc602Intersection$8018fbf0-1a05-11eb-3032-95aae07ca78f:plot_photon_arrow!$eabca8ce-1c73-11eb-26ad-271f6eba889b|>isaall_intersections$1b0c0e4c-1c73-11eb-225d-23c731455755as_svgenumeratephilip$55187168-1c78-11eb-1182-ab4336b577a4plot_scene$eff9329e-1a05-11eb-261f-734127d36750scatter!$038d5e88-1ac7-11eb-2020-a9d7e19feebcprecedence_heuristic	cell_id$038d5e88-1ac7-11eb-2020-a9d7e19feebcdownstream_cells_mapupstream_cells_map @md_strIntersection$8018fbf0-1a05-11eb-3032-95aae07ca78fMissingnormalize>!islessPhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510intersection$aa19faa4-1941-11eb-2b61-9b78aaf42876$885ac814-1953-11eb-30d9-85dcd198a1d8still_missing$ec4abc12-19c3-11eb-1ca4-b5e9d3cd100bisa<Miss$8acef4b0-1a09-11eb-068d-79a259244ed1-keep_working$ec57b460-19c3-11eb-2142-07cf28dcf02bWall$99c61b74-1941-11eb-2323-2bdb7c120a28correct$ec698eb0-19c3-11eb-340a-e319abb8ebb5almost$ec3ed530-19c3-11eb-10bb-a55e77550d1fabsgetindex$1e202680-19c4-11eb-29a7-99061b886b3cprecedence_heuristic	cell_id$1e202680-19c4-11eb-29a7-99061b886b3cdownstream_cells_mapstudent$1df82c20-19c4-11eb-0959-8543a0d5630d$ebd05bf0-19c3-11eb-2559-7d0745a84025upstream_cells_map$293776f8-1ac4-11eb-21db-9d023c09e89fprecedence_heuristic	cell_id$293776f8-1ac4-11eb-21db-9d023c09e89fdownstream_cells_mapupstream_cells_map@md_strgetindex$6de1bafc-1a01-11eb-3d67-c9d9b6c3cea8precedence_heuristic	cell_id$6de1bafc-1a01-11eb-3d67-c9d9b6c3cea8downstream_cells_mapplot_object!$eff9329e-1a05-11eb-261f-734127d36750upstream_cells_mapWall$99c61b74-1941-11eb-2323-2bdb7c120a28-first+*lastplot!$e5ed6098-1c70-11eb-0b58-31d1830b9a10precedence_heuristic	cell_id$e5ed6098-1c70-11eb-0b58-31d1830b9a10downstream_cells_mapupstream_cells_map@md_strgetindex$e9c5d68c-1ac2-11eb-04ec-3b72eb133239precedence_heuristic	cell_id$e9c5d68c-1ac2-11eb-04ec-3b72eb133239downstream_cells_mapupstream_cells_map@md_strgetindex$492b257a-194f-11eb-17fb-f770b4d3da2eprecedence_heuristic	cell_id$492b257a-194f-11eb-17fb-f770b4d3da2edownstream_cells_mapupstream_cells_map@md_strgetindex$0393dd3a-1a06-11eb-18a9-494ae7a26bc0precedence_heuristic	cell_id$0393dd3a-1a06-11eb-18a9-494ae7a26bc0downstream_cells_mapupstream_cells_mapbox_scene$d257a728-1a04-11eb-281d-bde30644f5f5plot_scene$eff9329e-1a05-11eb-261f-734127d36750$ec698eb0-19c3-11eb-340a-e319abb8ebb5precedence_heuristic	cell_id$ec698eb0-19c3-11eb-340a-e319abb8ebb5downstream_cells_mapcorrect$0e9a240c-1ac5-11eb-1a7e-b3c43c459484$0787f130-1aca-11eb-24b4-2ff2ddd0bc48$038d5e88-1ac7-11eb-2020-a9d7e19feebcupstream_cells_mapMarkdown.Admonitionyays$ec5d59b0-19c3-11eb-0206-cbd1a5415c28Markdown.MDMarkdownrand$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8precedence_heuristic	cell_id$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8downstream_cells_maptest_lens_photon$83acf10e-1c9e-11eb-3426-bb28e7bc6c79$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7eupstream_cells_mapPhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510$19cf420e-1c7c-11eb-1cb8-dd939fee1276precedence_heuristic	cell_id$19cf420e-1c7c-11eb-1cb8-dd939fee1276downstream_cells_mapupstream_cells_map$71dc652e-1c9c-11eb-396c-cfd9ee2261feprecedence_heuristic	cell_id$71dc652e-1c9c-11eb-396c-cfd9ee2261fedownstream_cells_mapupstream_cells_map@md_strgetindex$ac9bafaa-1ac4-11eb-16c4-0df8133f9c98precedence_heuristic	cell_id$ac9bafaa-1ac4-11eb-16c4-0df8133f9c98downstream_cells_mapupstream_cells_map$dced1fd0-1c9e-11eb-3226-17dc1e09e018precedence_heuristic	cell_id$dced1fd0-1c9e-11eb-3226-17dc1e09e018downstream_cells_mapupstream_cells_map@md_strgetindex$a306e880-19eb-11eb-0ff1-d7ef49777f63precedence_heuristic	cell_id$a306e880-19eb-11eb-0ff1-d7ef49777f63downstream_cells_maptest_intersection$3663bf80-1a06-11eb-3596-8fbbed28cc38upstream_cells_mapdizzy$6544be90-19d3-11eb-153c-218025f738c6test_wall$0906b340-19d3-11eb-112c-e568f69deb5dintersection$aa19faa4-1941-11eb-2b61-9b78aaf42876$885ac814-1953-11eb-30d9-85dcd198a1d8$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7eprecedence_heuristic	cell_id$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7edownstream_cells_mapupstream_cells_map:accumulatetest_lens_photon$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8first|>as_svgstep_ray$76ef6e46-1a06-11eb-03e3-9f40a86dc9aabox_scene$d257a728-1a04-11eb-281d-bde30644f5f5plot!lastplot_scene$eff9329e-1a05-11eb-261f-734127d36750sphere_test_ray_N$c492a1f8-1a0c-11eb-2c38-5921c39cf5f8test_lens$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150$ec31dce0-19c3-11eb-1487-23cc20cd5277precedence_heuristic	cell_id$ec31dce0-19c3-11eb-1487-23cc20cd5277downstream_cells_maphint$ad5a7420-1c7f-11eb-042f-115a9ef4c676$c25caf08-1a13-11eb-3c4d-0567faf4e662upstream_cells_mapMarkdown.AdmonitionMarkdown.MDMarkdown$9df1d0f2-1ac3-11eb-0eac-d90eccca669cprecedence_heuristic	cell_id$9df1d0f2-1ac3-11eb-0eac-d90eccca669cdownstream_cells_maptest_intersection_1$bc10541e-1ac3-11eb-0b5f-916922f1a8e8upstream_cells_mapIntersection$8018fbf0-1a05-11eb-3032-95aae07ca78ftest_wall$0906b340-19d3-11eb-112c-e568f69deb5d$fb70cc0c-1c7f-11eb-31b5-87b168a66e19precedence_heuristic	cell_id$fb70cc0c-1c7f-11eb-31b5-87b168a66e19downstream_cells_mapupstream_cells_mapex_1_scene$2158a356-1a05-11eb-3f5b-4dfa810fc602as_svgtest_new_photon$0b03316c-1c80-11eb-347c-1b5c9a0ae379plot_photon_arrow!$eabca8ce-1c73-11eb-26ad-271f6eba889b|>philip$55187168-1c78-11eb-1182-ab4336b577a4plot_scene$eff9329e-1a05-11eb-261f-734127d36750$ec7638e0-19c3-11eb-1ca1-0b3aa3b40240precedence_heuristic	cell_id$ec7638e0-19c3-11eb-1ca1-0b3aa3b40240downstream_cells_mapnot_definedupstream_cells_map@md_strstringMarkdown.AdmonitionMarkdown.MDMarkdown.CodeMarkdowngetindex$885ac814-1953-11eb-30d9-85dcd198a1d8precedence_heuristic	cell_id$885ac814-1953-11eb-30d9-85dcd198a1d8downstream_cells_mapintersection$038d5e88-1ac7-11eb-2020-a9d7e19feebc$a306e880-19eb-11eb-0ff1-d7ef49777f63$1b0c0e4c-1c73-11eb-225d-23c731455755$754eeec4-1a07-11eb-1329-8d9ae0948613$251f0262-1a0c-11eb-39a3-09be67091dc8upstream_cells_mapIntersection$8018fbf0-1a05-11eb-3032-95aae07ca78fSphere$3aa539ce-193f-11eb-2a0f-bbc6b83528b7sqrt>islessPhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510<dotMiss$8acef4b0-1a09-11eb-068d-79a259244ed1-<=/^+*$3dd0a48c-1ca3-11eb-1127-e7c43b5d1666precedence_heuristic	cell_id$3dd0a48c-1ca3-11eb-1127-e7c43b5d1666downstream_cells_mapupstream_cells_map@md_strgetindex$63ef21c6-1c7a-11eb-2f3c-c5ac16bc289fprecedence_heuristic	cell_id$63ef21c6-1c7a-11eb-2f3c-c5ac16bc289fdownstream_cells_mapupstream_cells_mapminimumall_intersections$1b0c0e4c-1c73-11eb-225d-23c731455755$c3e52bf2-ca9a-11ea-13aa-03a4335f2906precedence_heuristiccell_id$c3e52bf2-ca9a-11ea-13aa-03a4335f2906downstream_cells_mapPkg$c3e52bf2-ca9a-11ea-13aa-03a4335f2906LinearAlgebraPlutoUI$337918f4-194f-11eb-0b45-b13fef3b23bfPlots$caa98732-19cd-11eb-04ce-2f018275cf01upstream_cells_mapPkg.addPkg$c3e52bf2-ca9a-11ea-13aa-03a4335f2906Pkg.activatePkg.PackageSpecmktempdir$a5847264-1ca0-11eb-0b45-eb5388f6e688precedence_heuristic	cell_id$a5847264-1ca0-11eb-0b45-eb5388f6e688downstream_cells_mapupstream_cells_map$5342430e-1c79-11eb-261c-15abd0f8cfc1precedence_heuristic	cell_id$5342430e-1c79-11eb-261c-15abd0f8cfc1downstream_cells_mapupstream_cells_map@md_strgetindex$392fe192-1ca1-11eb-36c4-f9bd2b01a5e5precedence_heuristic	cell_id$392fe192-1ca1-11eb-36c4-f9bd2b01a5e5downstream_cells_mapupstream_cells_map$1df32310-19c4-11eb-0824-6766cd21aaf4precedence_heuristic	cell_id$1df32310-19c4-11eb-0824-6766cd21aaf4downstream_cells_mapupstream_cells_map@md_strgetindex$e70b9e24-1a07-11eb-13db-b95c07880893precedence_heuristic	cell_id$e70b9e24-1a07-11eb-13db-b95c07880893downstream_cells_mapinteract$0b03316c-1c80-11eb-347c-1b5c9a0ae379$76ef6e46-1a06-11eb-03e3-9f40a86dc9aaupstream_cells_mapIntersection$8018fbf0-1a05-11eb-3032-95aae07ca78fWall$99c61b74-1941-11eb-2323-2bdb7c120a28Photon$24b0d4ba-192c-11eb-0f66-e77b544b0510reflect$43306bd4-194d-11eb-2e30-07eabb8b29ef$c25caf08-1a13-11eb-3c4d-0567faf4e662precedence_heuristic	cell_id$c25caf08-1a13-11eb-3c4d-0567faf4e662downstream_cells_mapupstream_cells_map@md_str|>hint$ec31dce0-19c3-11eb-1487-23cc20cd5277getindex$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5precedence_heuristic	cell_id$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5downstream_cells_maptest_closest$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5$0b03316c-1c80-11eb-347c-1b5c9a0ae379upstream_cells_mapex_1_scene$2158a356-1a05-11eb-3f5b-4dfa810fc602closest_hit$754eeec4-1a07-11eb-1329-8d9ae0948613philip$55187168-1c78-11eb-1182-ab4336b577a4$ba0a869a-1ad1-11eb-091f-916e9151f052precedence_heuristic	cell_id$ba0a869a-1ad1-11eb-091f-916e9151f052downstream_cells_mapupstream_cells_map@md_strBase.getindexBaseBase.Docs.HTML@html_str$925e98d4-1c78-11eb-230d-994518f0060eprecedence_heuristic	cell_id$925e98d4-1c78-11eb-230d-994518f0060edownstream_cells_maptest_photon$76d4351c-1c78-11eb-243f-5f6f5e485d5dupstream_cells_mapnormalizePhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510$43306bd4-194d-11eb-2e30-07eabb8b29efprecedence_heuristic	cell_id$43306bd4-194d-11eb-2e30-07eabb8b29efdownstream_cells_mapreflect$e70b9e24-1a07-11eb-13db-b95c07880893upstream_cells_mapdot-*Vector$6544be90-19d3-11eb-153c-218025f738c6precedence_heuristic	cell_id$6544be90-19d3-11eb-153c-218025f738c6downstream_cells_mapdizzy$a306e880-19eb-11eb-0ff1-d7ef49777f63$3663bf80-1a06-11eb-3596-8fbbed28cc38upstream_cells_mapnormalizedizzy_angle$7f286ccc-1c75-11eb-1270-95a87840b300+πPhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510cossin$522e6b22-194d-11eb-167c-052e65f6b703precedence_heuristic	cell_id$522e6b22-194d-11eb-167c-052e65f6b703downstream_cells_mapupstream_cells_map@md_strgetindex$251f0262-1a0c-11eb-39a3-09be67091dc8precedence_heuristic	cell_id$251f0262-1a0c-11eb-39a3-09be67091dc8downstream_cells_mapsphere_intersection$83aa9cea-1a0c-11eb-281d-699665da2b4fupstream_cells_mapphilip$55187168-1c78-11eb-1182-ab4336b577a4intersection$aa19faa4-1941-11eb-2b61-9b78aaf42876$885ac814-1953-11eb-30d9-85dcd198a1d8test_sphere$af5c6bea-1c9c-11eb-35ae-250337e4fc86$8acef4b0-1a09-11eb-068d-79a259244ed1precedence_heuristic	cell_id$8acef4b0-1a09-11eb-068d-79a259244ed1downstream_cells_mapMiss$5a9d00f6-1ac3-11eb-01fb-53c35796e766$aa19faa4-1941-11eb-2b61-9b78aaf42876$038d5e88-1ac7-11eb-2020-a9d7e19feebc$6c37c5f4-1a09-11eb-08ae-9dce752f29cb$885ac814-1953-11eb-30d9-85dcd198a1d8upstream_cells_map$8018fbf0-1a05-11eb-3032-95aae07ca78fprecedence_heuristic	cell_id$8018fbf0-1a05-11eb-3032-95aae07ca78fdownstream_cells_mapIntersection$9df1d0f2-1ac3-11eb-0eac-d90eccca669c$aa19faa4-1941-11eb-2b61-9b78aaf42876$038d5e88-1ac7-11eb-2020-a9d7e19feebc$e055262c-1c73-11eb-14de-2f537a19b012$6c37c5f4-1a09-11eb-08ae-9dce752f29cb$e70b9e24-1a07-11eb-13db-b95c07880893$885ac814-1953-11eb-30d9-85dcd198a1d8$83aa9cea-1a0c-11eb-281d-699665da2b4f$e1cb1622-1a0c-11eb-224c-559af7b90f49upstream_cells_mapObject$d851a202-1ca0-11eb-3da0-51fcb656783cFloat64Vector$2158a356-1a05-11eb-3f5b-4dfa810fc602precedence_heuristic	cell_id$2158a356-1a05-11eb-3f5b-4dfa810fc602downstream_cells_mapex_1_scene$5501a700-19ec-11eb-0ded-53e41f7f821a$1b0c0e4c-1c73-11eb-225d-23c731455755$e055262c-1c73-11eb-14de-2f537a19b012$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5$fb70cc0c-1c7f-11eb-31b5-87b168a66e19$1ee0787e-1a08-11eb-233b-43a654f70117upstream_cells_mapbox_scene$d257a728-1a04-11eb-281d-bde30644f5f5test_wall$0906b340-19d3-11eb-112c-e568f69deb5d$99c61b74-1941-11eb-2323-2bdb7c120a28precedence_heuristic	cell_id$99c61b74-1941-11eb-2323-2bdb7c120a28downstream_cells_mapWall$0906b340-19d3-11eb-112c-e568f69deb5d$6de1bafc-1a01-11eb-3d67-c9d9b6c3cea8$d257a728-1a04-11eb-281d-bde30644f5f5$0e9a240c-1ac5-11eb-1a7e-b3c43c459484$f76ab794-1ac9-11eb-26e3-b9d0baa05d49$0787f130-1aca-11eb-24b4-2ff2ddd0bc48$aa19faa4-1941-11eb-2b61-9b78aaf42876$038d5e88-1ac7-11eb-2020-a9d7e19feebc$e70b9e24-1a07-11eb-13db-b95c07880893upstream_cells_mapObject$d851a202-1ca0-11eb-3da0-51fcb656783cFloat64Vector$78915326-1937-11eb-014f-fff29b3660a0precedence_heuristic	cell_id$78915326-1937-11eb-014f-fff29b3660a0downstream_cells_mapupstream_cells_map@md_strgetindex$71b70da6-193e-11eb-0bc4-f309d24fd4efprecedence_heuristic	cell_id$71b70da6-193e-11eb-0bc4-f309d24fd4efdownstream_cells_mapupstream_cells_map@md_strgetindex$ad5a7420-1c7f-11eb-042f-115a9ef4c676precedence_heuristic	cell_id$ad5a7420-1c7f-11eb-042f-115a9ef4c676downstream_cells_mapupstream_cells_map@md_strhint$ec31dce0-19c3-11eb-1487-23cc20cd5277getindex$4d69c36a-1c73-11eb-3ae3-23900db09c27precedence_heuristic	cell_id$4d69c36a-1c73-11eb-3ae3-23900db09c27downstream_cells_mapupstream_cells_map@md_strgetindex$55f475a8-1c7a-11eb-377e-91d07fa0bdb6precedence_heuristic	cell_id$55f475a8-1c7a-11eb-377e-91d07fa0bdb6downstream_cells_mapupstream_cells_map@md_strgetindex$ebd05bf0-19c3-11eb-2559-7d0745a84025precedence_heuristic	cell_id$ebd05bf0-19c3-11eb-2559-7d0745a84025downstream_cells_mapupstream_cells_map@md_strstudent$1e202680-19c4-11eb-29a7-99061b886b3c==getindex$5aa7c4e8-1ac3-11eb-23f3-03bd58e75c4bprecedence_heuristic	cell_id$5aa7c4e8-1ac3-11eb-23f3-03bd58e75c4bdownstream_cells_mapupstream_cells_map@md_strgetindex$87a8e280-1c7c-11eb-2bb0-034011f6c10fprecedence_heuristic	cell_id$87a8e280-1c7c-11eb-2bb0-034011f6c10fdownstream_cells_mapupstream_cells_map@md_strgetindex$754eeec4-1a07-11eb-1329-8d9ae0948613precedence_heuristic	cell_id$754eeec4-1a07-11eb-1329-8d9ae0948613downstream_cells_mapclosest_hit$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5$76ef6e46-1a06-11eb-03e3-9f40a86dc9aaupstream_cells_mapminimumObject$d851a202-1ca0-11eb-3da0-51fcb656783cPhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510intersection$aa19faa4-1941-11eb-2b61-9b78aaf42876$885ac814-1953-11eb-30d9-85dcd198a1d8Vector$e135d490-1ac2-11eb-053e-914051f16e31precedence_heuristic	cell_id$e135d490-1ac2-11eb-053e-914051f16e31downstream_cells_mapupstream_cells_map@md_strBase.getindexBaseBase.Docs.HTML@html_str$d257a728-1a04-11eb-281d-bde30644f5f5precedence_heuristic	cell_id$d257a728-1a04-11eb-281d-bde30644f5f5downstream_cells_mapbox_scene$0393dd3a-1a06-11eb-18a9-494ae7a26bc0$0e9a240c-1ac5-11eb-1a7e-b3c43c459484$76d4351c-1c78-11eb-243f-5f6f5e485d5d$2158a356-1a05-11eb-3f5b-4dfa810fc602$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89$83acf10e-1c9e-11eb-3426-bb28e7bc6c79$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7e$bff04784-1acc-11eb-36c2-9335a58be23aupstream_cells_mapWall$99c61b74-1941-11eb-2323-2bdb7c120a28$8cfa4902-1ad3-11eb-03a1-736898ff9cefprecedence_heuristic	cell_id$8cfa4902-1ad3-11eb-03a1-736898ff9cefdownstream_cells_mapTODO_noteupstream_cells_mapMarkdown.AdmonitionMarkdown.MDMarkdown$ec85c940-19c3-11eb-3375-a90735beaec1precedence_heuristic	cell_id$ec85c940-19c3-11eb-3375-a90735beaec1downstream_cells_mapTODOupstream_cells_mapBaseBase.Docs.HTML@html_str$6c37c5f4-1a09-11eb-08ae-9dce752f29cbprecedence_heuristic	cell_id$6c37c5f4-1a09-11eb-08ae-9dce752f29cbdownstream_cells_mapBase.islessupstream_cells_mapBaseIntersection$8018fbf0-1a05-11eb-3032-95aae07ca78fMiss$8acef4b0-1a09-11eb-068d-79a259244ed1<$79532662-1c7e-11eb-2edf-57e7cfbc1edaprecedence_heuristic	cell_id$79532662-1c7e-11eb-2edf-57e7cfbc1edadownstream_cells_mapupstream_cells_map$76d4351c-1c78-11eb-243f-5f6f5e485d5dprecedence_heuristic	cell_id$76d4351c-1c78-11eb-243f-5f6f5e485d5ddownstream_cells_mapupstream_cells_maptest_photon$925e98d4-1c78-11eb-230d-994518f0060ebox_scene$d257a728-1a04-11eb-281d-bde30644f5f5plot_photon_arrow!$eabca8ce-1c73-11eb-26ad-271f6eba889bplot_scene$eff9329e-1a05-11eb-261f-734127d36750$3663bf80-1a06-11eb-3596-8fbbed28cc38precedence_heuristic	cell_id$3663bf80-1a06-11eb-3596-8fbbed28cc38downstream_cells_mapupstream_cells_map:dizzy$6544be90-19d3-11eb-153c-218025f738c6plot_photon_arrow!$eabca8ce-1c73-11eb-26ad-271f6eba889btest_wall$0906b340-19d3-11eb-112c-e568f69deb5dplot_scene$eff9329e-1a05-11eb-261f-734127d36750test_intersection$a306e880-19eb-11eb-0ff1-d7ef49777f63scatter!$caa98732-19cd-11eb-04ce-2f018275cf01precedence_heuristic	cell_id$caa98732-19cd-11eb-04ce-2f018275cf01downstream_cells_mapplot_object!$eff9329e-1a05-11eb-261f-734127d36750upstream_cells_mapSphere$3aa539ce-193f-11eb-2a0f-bbc6b83528b7LinRangePlots$c3e52bf2-ca9a-11ea-13aa-03a4335f2906first|>plot!+πlastcos*sin$427747d6-1ca1-11eb-28ae-ff50728c84feprecedence_heuristic	cell_id$427747d6-1ca1-11eb-28ae-ff50728c84fedownstream_cells_mapupstream_cells_map$052dc502-1c7a-11eb-2316-d3a1eef2af94precedence_heuristic	cell_id$052dc502-1c7a-11eb-2316-d3a1eef2af94downstream_cells_mapupstream_cells_map@md_strgetindex$3aa539ce-193f-11eb-2a0f-bbc6b83528b7precedence_heuristic	cell_id$3aa539ce-193f-11eb-2a0f-bbc6b83528b7downstream_cells_mapSphere$caa98732-19cd-11eb-04ce-2f018275cf01$e5c0e960-19cc-11eb-107d-39b397a783ab$885ac814-1953-11eb-30d9-85dcd198a1d8$af5c6bea-1c9c-11eb-35ae-250337e4fc86$6fdf613c-193f-11eb-0029-957541d2ed4d$e1cb1622-1a0c-11eb-224c-559af7b90f49$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150$bff04784-1acc-11eb-36c2-9335a58be23aupstream_cells_mapRealObject$d851a202-1ca0-11eb-3da0-51fcb656783cFloat64Vector$a45e1012-194d-11eb-3252-bb89daed3c8dprecedence_heuristic	cell_id$a45e1012-194d-11eb-3252-bb89daed3c8ddownstream_cells_mapupstream_cells_map@md_strgetindex$e5c0e960-19cc-11eb-107d-39b397a783abprecedence_heuristic	cell_id$e5c0e960-19cc-11eb-107d-39b397a783abdownstream_cells_mapexample_sphere$2a2b7284-1ade-11eb-3b71-d17fe2ca638aupstream_cells_mapSphere$3aa539ce-193f-11eb-2a0f-bbc6b83528b7$92290e54-1940-11eb-1a24-5d1eaee9f6caprecedence_heuristic	cell_id$92290e54-1940-11eb-1a24-5d1eaee9f6cadownstream_cells_mapupstream_cells_map@md_strgetindex$1e01c912-19c4-11eb-269a-9796cccdf274precedence_heuristic	cell_id$1e01c912-19c4-11eb-269a-9796cccdf274downstream_cells_mapupstream_cells_mapBaseBase.Docs.HTML@html_str$1e2cd0b0-19c4-11eb-3583-0b82092139aaprecedence_heuristic	cell_id$1e2cd0b0-19c4-11eb-3583-0b82092139aadownstream_cells_mapupstream_cells_map@md_strgetindex$6cf7df1a-1c7a-11eb-230b-df1333f191c7precedence_heuristic	cell_id$6cf7df1a-1c7a-11eb-230b-df1333f191c7downstream_cells_mapupstream_cells_map@md_strgetindex$5a9d00f6-1ac3-11eb-01fb-53c35796e766precedence_heuristic	cell_id$5a9d00f6-1ac3-11eb-01fb-53c35796e766downstream_cells_mapa_missupstream_cells_mapMiss$8acef4b0-1a09-11eb-068d-79a259244ed1$ec275590-19c3-11eb-23d0-cb3d9f62ba92precedence_heuristic	cell_id$ec275590-19c3-11eb-23d0-cb3d9f62ba92downstream_cells_mapupstream_cells_map@md_strgetindex$0e9a240c-1ac5-11eb-1a7e-b3c43c459484precedence_heuristic	cell_id$0e9a240c-1ac5-11eb-1a7e-b3c43c459484downstream_cells_mapupstream_cells_map@md_str!Vectorlengthisacorrect$ec698eb0-19c3-11eb-340a-e319abb8ebb5Wall$99c61b74-1941-11eb-2323-2bdb7c120a28keep_working$ec57b460-19c3-11eb-2142-07cf28dcf02bbox_scene$d257a728-1a04-11eb-281d-bde30644f5f5!=last==getindex$e9c6a0b8-1ad0-11eb-1606-0319caf0948aprecedence_heuristic	cell_id$e9c6a0b8-1ad0-11eb-1606-0319caf0948adownstream_cells_mapupstream_cells_map@md_strBase.getindexBaseBase.Docs.HTML@html_str$54b81de0-193f-11eb-004d-f90ec43588f8precedence_heuristic	cell_id$54b81de0-193f-11eb-004d-f90ec43588f8downstream_cells_mapupstream_cells_map@md_strgetindex$7ba5dda0-1ad1-11eb-1c4e-2391c11f54b3precedence_heuristic	cell_id$7ba5dda0-1ad1-11eb-1c4e-2391c11f54b3downstream_cells_mapupstream_cells_map@md_strgetindex$1ee0787e-1a08-11eb-233b-43a654f70117precedence_heuristic	cell_id$1ee0787e-1a08-11eb-233b-43a654f70117downstream_cells_mapupstream_cells_mapex_1_scene$2158a356-1a05-11eb-3f5b-4dfa810fc602trace$900d6622-1a08-11eb-1475-bfadc2aac749plot_photon_arrow!$eabca8ce-1c73-11eb-26ad-271f6eba889bfirst|>as_svgmirror_test_ray_N$3cd36ac0-1a09-11eb-1818-75b36e67594aplot!philip$55187168-1c78-11eb-1182-ab4336b577a4lastplot_scene$eff9329e-1a05-11eb-261f-734127d36750$ec4abc12-19c3-11eb-1ca4-b5e9d3cd100bprecedence_heuristic	cell_id$ec4abc12-19c3-11eb-1ca4-b5e9d3cd100bdownstream_cells_mapstill_missing$0787f130-1aca-11eb-24b4-2ff2ddd0bc48$038d5e88-1ac7-11eb-2020-a9d7e19feebcupstream_cells_map@md_strMarkdown.AdmonitionMarkdown.MDMarkdowngetindex$eff9329e-1a05-11eb-261f-734127d36750precedence_heuristic	cell_id$eff9329e-1a05-11eb-261f-734127d36750downstream_cells_mapplot_scene$e45e1d36-1a12-11eb-2720-294c4be6e9fd$0393dd3a-1a06-11eb-18a9-494ae7a26bc0$76d4351c-1c78-11eb-243f-5f6f5e485d5d$3663bf80-1a06-11eb-3596-8fbbed28cc38$5501a700-19ec-11eb-0ded-53e41f7f821a$e055262c-1c73-11eb-14de-2f537a19b012$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5$fb70cc0c-1c7f-11eb-31b5-87b168a66e19$1ee0787e-1a08-11eb-233b-43a654f70117$2a2b7284-1ade-11eb-3b71-d17fe2ca638a$83aa9cea-1a0c-11eb-281d-699665da2b4f$83acf10e-1c9e-11eb-3426-bb28e7bc6c79$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7e$bff04784-1acc-11eb-36c2-9335a58be23aupstream_cells_mapplot_object!$6de1bafc-1a01-11eb-3d67-c9d9b6c3cea8$caa98732-19cd-11eb-04ce-2f018275cf01plotObject$d851a202-1ca0-11eb-3da0-51fcb656783cVector$0906b340-19d3-11eb-112c-e568f69deb5dprecedence_heuristic	cell_id$0906b340-19d3-11eb-112c-e568f69deb5ddownstream_cells_maptest_wall$e45e1d36-1a12-11eb-2720-294c4be6e9fd$9df1d0f2-1ac3-11eb-0eac-d90eccca669c$a306e880-19eb-11eb-0ff1-d7ef49777f63$3663bf80-1a06-11eb-3596-8fbbed28cc38$2158a356-1a05-11eb-3f5b-4dfa810fc602upstream_cells_mapWall$99c61b74-1941-11eb-2323-2bdb7c120a28normalize$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5precedence_heuristic	cell_id$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5downstream_cells_mapupstream_cells_mapex_1_scene$2158a356-1a05-11eb-3f5b-4dfa810fc602:as_svgtest_closest$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5plot_photon_arrow!$eabca8ce-1c73-11eb-26ad-271f6eba889b|>philip$55187168-1c78-11eb-1182-ab4336b577a4plot_scene$eff9329e-1a05-11eb-261f-734127d36750scatter!$13fef49c-1c9e-11eb-2aa3-d3aa2bfd0d57precedence_heuristic	cell_id$13fef49c-1c9e-11eb-2aa3-d3aa2bfd0d57downstream_cells_mapupstream_cells_map@md_strgetindex$1df82c20-19c4-11eb-0959-8543a0d5630dprecedence_heuristic	cell_id$1df82c20-19c4-11eb-0959-8543a0d5630ddownstream_cells_mapupstream_cells_map@md_strstudent$1e202680-19c4-11eb-29a7-99061b886b3cgetindex$337918f4-194f-11eb-0b45-b13fef3b23bfprecedence_heuristic	cell_id$337918f4-194f-11eb-0b45-b13fef3b23bfdownstream_cells_mapupstream_cells_mapPlutoUI$c3e52bf2-ca9a-11ea-13aa-03a4335f2906PlutoUI.Resource$70b8401e-1c7e-11eb-16b2-d54d8f66d71aprecedence_heuristic	cell_id$70b8401e-1c7e-11eb-16b2-d54d8f66d71adownstream_cells_mapupstream_cells_map@md_strgetindex$eb35ac4a-1acc-11eb-0729-ff85c8406c45precedence_heuristic	cell_id$eb35ac4a-1acc-11eb-0729-ff85c8406c45downstream_cells_mapaberration_viz_ior$f83da7f8-1acc-11eb-02d7-f33ffe518531upstream_cells_mapCoreBase:PlutoRunner.create_bondPlutoRunnerCore.applicable@bindBase.getSlider$0b03316c-1c80-11eb-347c-1b5c9a0ae379precedence_heuristic	cell_id$0b03316c-1c80-11eb-347c-1b5c9a0ae379downstream_cells_maptest_new_photon$fb70cc0c-1c7f-11eb-31b5-87b168a66e19upstream_cells_maptest_closest$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5philip$55187168-1c78-11eb-1182-ab4336b577a4interact$e70b9e24-1a07-11eb-13db-b95c07880893$e1cb1622-1a0c-11eb-224c-559af7b90f49$ec3ed530-19c3-11eb-10bb-a55e77550d1fprecedence_heuristic	cell_id$ec3ed530-19c3-11eb-10bb-a55e77550d1fdownstream_cells_mapalmost$038d5e88-1ac7-11eb-2020-a9d7e19feebcupstream_cells_mapMarkdown.AdmonitionMarkdown.MDMarkdown$42d65f56-1aca-11eb-1079-e32f85554349precedence_heuristic	cell_id$42d65f56-1aca-11eb-1079-e32f85554349downstream_cells_mapupstream_cells_map@md_strBase.getindexBaseBase.Docs.HTML@html_str$1b0c0e4c-1c73-11eb-225d-23c731455755precedence_heuristic	cell_id$1b0c0e4c-1c73-11eb-225d-23c731455755downstream_cells_mapall_intersections$e055262c-1c73-11eb-14de-2f537a19b012$c3090e4a-1a09-11eb-0f32-d3bbfd9992e0$63ef21c6-1c7a-11eb-2f3c-c5ac16bc289fupstream_cells_mapex_1_scene$2158a356-1a05-11eb-3f5b-4dfa810fc602philip$55187168-1c78-11eb-1182-ab4336b577a4intersection$aa19faa4-1941-11eb-2b61-9b78aaf42876$885ac814-1953-11eb-30d9-85dcd198a1d8$e45e1d36-1a12-11eb-2720-294c4be6e9fdprecedence_heuristic	cell_id$e45e1d36-1a12-11eb-2720-294c4be6e9fddownstream_cells_mapupstream_cells_maptest_wall$0906b340-19d3-11eb-112c-e568f69deb5dplot_scene$eff9329e-1a05-11eb-261f-734127d36750$5501a700-19ec-11eb-0ded-53e41f7f821aprecedence_heuristic	cell_id$5501a700-19ec-11eb-0ded-53e41f7f821adownstream_cells_mapupstream_cells_mapex_1_scene$2158a356-1a05-11eb-3f5b-4dfa810fc602plot_photon_arrow!$eabca8ce-1c73-11eb-26ad-271f6eba889bphilip$55187168-1c78-11eb-1182-ab4336b577a4plot_scene$eff9329e-1a05-11eb-261f-734127d36750$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89precedence_heuristic	cell_id$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89downstream_cells_mapex_3_scene$83aa9cea-1a0c-11eb-281d-699665da2b4fupstream_cells_mapbox_scene$d257a728-1a04-11eb-281d-bde30644f5f5test_sphere$af5c6bea-1c9c-11eb-35ae-250337e4fc86$83aa9cea-1a0c-11eb-281d-699665da2b4fprecedence_heuristic	cell_id$83aa9cea-1a0c-11eb-281d-699665da2b4fdownstream_cells_mapupstream_cells_mapIntersection$8018fbf0-1a05-11eb-3032-95aae07ca78f:plot_photon_arrow!$eabca8ce-1c73-11eb-26ad-271f6eba889b|>isaex_3_scene$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89as_svgphilip$55187168-1c78-11eb-1182-ab4336b577a4plot_scene$eff9329e-1a05-11eb-261f-734127d36750sphere_intersection$251f0262-1a0c-11eb-39a3-09be67091dc8scatter!$900d6622-1a08-11eb-1475-bfadc2aac749precedence_heuristic	cell_id$900d6622-1a08-11eb-1475-bfadc2aac749downstream_cells_maptrace$1ee0787e-1a08-11eb-233b-43a654f70117upstream_cells_map:accumulatestep_ray$76ef6e46-1a06-11eb-03e3-9f40a86dc9aaObject$d851a202-1ca0-11eb-3da0-51fcb656783cPhoton$24b0d4ba-192c-11eb-0f66-e77b544b0510Vector$14dc73d2-1a0d-11eb-1a3c-0f793e74da9bprecedence_heuristic	cell_id$14dc73d2-1a0d-11eb-1a3c-0f793e74da9bdownstream_cells_maprefract$e1cb1622-1a0c-11eb-224c-559af7b90f49upstream_cells_mapnormalizesqrtislessVector<dot-/^+*$1a43b70c-1ca3-11eb-12a5-a94ebbba0e86precedence_heuristic	cell_id$1a43b70c-1ca3-11eb-12a5-a94ebbba0e86downstream_cells_mapupstream_cells_map$abe3de54-1ca0-11eb-01cd-11fe798bfb97precedence_heuristic	cell_id$abe3de54-1ca0-11eb-01cd-11fe798bfb97downstream_cells_mapupstream_cells_mapcell_execution_order $c3e52bf2-ca9a-11ea-13aa-03a4335f2906$1df32310-19c4-11eb-0824-6766cd21aaf4$1e01c912-19c4-11eb-269a-9796cccdf274$1e109620-19c4-11eb-013e-1bc95c14c2ba$1e202680-19c4-11eb-29a7-99061b886b3c$1df82c20-19c4-11eb-0959-8543a0d5630d$1e2cd0b0-19c4-11eb-3583-0b82092139aa$92290e54-1940-11eb-1a24-5d1eaee9f6ca$d851a202-1ca0-11eb-3da0-51fcb656783c$99c61b74-1941-11eb-2323-2bdb7c120a28$0906b340-19d3-11eb-112c-e568f69deb5d$6de1bafc-1a01-11eb-3d67-c9d9b6c3cea8$5f551588-1ac4-11eb-1f86-197442f1ef1d$d257a728-1a04-11eb-281d-bde30644f5f5$ac9bafaa-1ac4-11eb-16c4-0df8133f9c98$293776f8-1ac4-11eb-21db-9d023c09e89f$e5ed6098-1c70-11eb-0b58-31d1830b9a10$24b0d4ba-192c-11eb-0f66-e77b544b0510$925e98d4-1c78-11eb-230d-994518f0060e$eabca8ce-1c73-11eb-26ad-271f6eba889b$aa43ef1c-1941-11eb-04de-552719a08da0$8acef4b0-1a09-11eb-068d-79a259244ed1$8018fbf0-1a05-11eb-3032-95aae07ca78f$e9c5d68c-1ac2-11eb-04ec-3b72eb133239$5a9d00f6-1ac3-11eb-01fb-53c35796e766$5aa7c4e8-1ac3-11eb-23f3-03bd58e75c4b$9df1d0f2-1ac3-11eb-0eac-d90eccca669c$bc10541e-1ac3-11eb-0b5f-916922f1a8e8$d39f149e-1ac3-11eb-39a2-41c2030d7d49$e135d490-1ac2-11eb-053e-914051f16e31$f76ab794-1ac9-11eb-26e3-b9d0baa05d49$abe3de54-1ca0-11eb-01cd-11fe798bfb97$42d65f56-1aca-11eb-1079-e32f85554349$a5847264-1ca0-11eb-0b45-eb5388f6e688$7f286ccc-1c75-11eb-1270-95a87840b300$6544be90-19d3-11eb-153c-218025f738c6$d70380a4-1ad0-11eb-1184-f7e9b84a83ad$55187168-1c78-11eb-1182-ab4336b577a4$2158a356-1a05-11eb-3f5b-4dfa810fc602$87a8e280-1c7c-11eb-2bb0-034011f6c10f$4d69c36a-1c73-11eb-3ae3-23900db09c27$5342430e-1c79-11eb-261c-15abd0f8cfc1$6c37c5f4-1a09-11eb-08ae-9dce752f29cb$aa19faa4-1941-11eb-2b61-9b78aaf42876$052dc502-1c7a-11eb-2316-d3a1eef2af94$55f475a8-1c7a-11eb-377e-91d07fa0bdb6$6cf7df1a-1c7a-11eb-230b-df1333f191c7$19cf420e-1c7c-11eb-1cb8-dd939fee1276$e9c6a0b8-1ad0-11eb-1606-0319caf0948a$522e6b22-194d-11eb-167c-052e65f6b703$dad5acfa-194c-11eb-27f9-01f40342a681$43306bd4-194d-11eb-2e30-07eabb8b29ef$70b8401e-1c7e-11eb-16b2-d54d8f66d71a$79532662-1c7e-11eb-2edf-57e7cfbc1eda$b6614d80-194b-11eb-1edb-dba3c29672f8$e70b9e24-1a07-11eb-13db-b95c07880893$2c6defd0-1ca1-11eb-17db-d5cb498f3265$3f727a2c-1c80-11eb-3608-e55ccb9786d9$a45e1012-194d-11eb-3252-bb89daed3c8d$7ba5dda0-1ad1-11eb-1c4e-2391c11f54b3$1a43b70c-1ca3-11eb-12a5-a94ebbba0e86$3cd36ac0-1a09-11eb-1818-75b36e67594a$7478330a-1c81-11eb-2f9f-099f1111032c$ba0a869a-1ad1-11eb-091f-916e9151f052$3aa539ce-193f-11eb-2a0f-bbc6b83528b7$caa98732-19cd-11eb-04ce-2f018275cf01$eff9329e-1a05-11eb-261f-734127d36750$e45e1d36-1a12-11eb-2720-294c4be6e9fd$0393dd3a-1a06-11eb-18a9-494ae7a26bc0$76d4351c-1c78-11eb-243f-5f6f5e485d5d$5501a700-19ec-11eb-0ded-53e41f7f821a$e5c0e960-19cc-11eb-107d-39b397a783ab$2a2b7284-1ade-11eb-3b71-d17fe2ca638a$e2a8d1d6-1add-11eb-0da1-cda1492a950c$337918f4-194f-11eb-0b45-b13fef3b23bf$492b257a-194f-11eb-17fb-f770b4d3da2e$885ac814-1953-11eb-30d9-85dcd198a1d8$a306e880-19eb-11eb-0ff1-d7ef49777f63$3663bf80-1a06-11eb-3596-8fbbed28cc38$1b0c0e4c-1c73-11eb-225d-23c731455755$e055262c-1c73-11eb-14de-2f537a19b012$c3090e4a-1a09-11eb-0f32-d3bbfd9992e0$63ef21c6-1c7a-11eb-2f3c-c5ac16bc289f$754eeec4-1a07-11eb-1329-8d9ae0948613$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5$392fe192-1ca1-11eb-36c4-f9bd2b01a5e5$af5c6bea-1c9c-11eb-35ae-250337e4fc86$251f0262-1a0c-11eb-39a3-09be67091dc8$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89$83aa9cea-1a0c-11eb-281d-699665da2b4f$71dc652e-1c9c-11eb-396c-cfd9ee2261fe$584ce620-1935-11eb-177a-f75d9ad8a399$78915326-1937-11eb-014f-fff29b3660a0$14dc73d2-1a0d-11eb-1a3c-0f793e74da9b$71b70da6-193e-11eb-0bc4-f309d24fd4ef$54b81de0-193f-11eb-004d-f90ec43588f8$6fdf613c-193f-11eb-0029-957541d2ed4d$392c25b8-1add-11eb-225d-49cfca27bef4$e1cb1622-1a0c-11eb-224c-559af7b90f49$0b03316c-1c80-11eb-347c-1b5c9a0ae379$fb70cc0c-1c7f-11eb-31b5-87b168a66e19$76ef6e46-1a06-11eb-03e3-9f40a86dc9aa$900d6622-1a08-11eb-1475-bfadc2aac749$1ee0787e-1a08-11eb-233b-43a654f70117$427747d6-1ca1-11eb-28ae-ff50728c84fe$dced1fd0-1c9e-11eb-3226-17dc1e09e018$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150$83acf10e-1c9e-11eb-3426-bb28e7bc6c79$13fef49c-1c9e-11eb-2aa3-d3aa2bfd0d57$c492a1f8-1a0c-11eb-2c38-5921c39cf5f8$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7e$c00eb0a6-cab2-11ea-3887-070ebd8d56e2$3dd0a48c-1ca3-11eb-1127-e7c43b5d1666$eb35ac4a-1acc-11eb-0729-ff85c8406c45$bff04784-1acc-11eb-36c2-9335a58be23a$f83da7f8-1acc-11eb-02d7-f33ffe518531$ebd05bf0-19c3-11eb-2559-7d0745a84025$ec275590-19c3-11eb-23d0-cb3d9f62ba92$ec31dce0-19c3-11eb-1487-23cc20cd5277$ad5a7420-1c7f-11eb-042f-115a9ef4c676$c25caf08-1a13-11eb-3c4d-0567faf4e662$ec3ed530-19c3-11eb-10bb-a55e77550d1f$ec4abc12-19c3-11eb-1ca4-b5e9d3cd100b$ec57b460-19c3-11eb-2142-07cf28dcf02b$ec5d59b0-19c3-11eb-0206-cbd1a5415c28$ec698eb0-19c3-11eb-340a-e319abb8ebb5$0e9a240c-1ac5-11eb-1a7e-b3c43c459484$0787f130-1aca-11eb-24b4-2ff2ddd0bc48$038d5e88-1ac7-11eb-2020-a9d7e19feebc$ec7638e0-19c3-11eb-1ca1-0b3aa3b40240$ec85c940-19c3-11eb-3375-a90735beaec1$8cfa4902-1ad3-11eb-03a1-736898ff9ceflast_hot_reload_time        shortpathhw7 solutions.jlprocess_statusreadypathF/home/runner/work/disorganised-mess/disorganised-mess/hw7 solutions.jlpluto_versionv0.19.47last_save_timeA g5ުcell_order $1df32310-19c4-11eb-0824-6766cd21aaf4$1df82c20-19c4-11eb-0959-8543a0d5630d$1e01c912-19c4-11eb-269a-9796cccdf274$1e109620-19c4-11eb-013e-1bc95c14c2ba$1e202680-19c4-11eb-29a7-99061b886b3c$1e2cd0b0-19c4-11eb-3583-0b82092139aa$c3e52bf2-ca9a-11ea-13aa-03a4335f2906$92290e54-1940-11eb-1a24-5d1eaee9f6ca$d851a202-1ca0-11eb-3da0-51fcb656783c$99c61b74-1941-11eb-2323-2bdb7c120a28$0906b340-19d3-11eb-112c-e568f69deb5d$e45e1d36-1a12-11eb-2720-294c4be6e9fd$6de1bafc-1a01-11eb-3d67-c9d9b6c3cea8$eff9329e-1a05-11eb-261f-734127d36750$5f551588-1ac4-11eb-1f86-197442f1ef1d$d257a728-1a04-11eb-281d-bde30644f5f5$ac9bafaa-1ac4-11eb-16c4-0df8133f9c98$0393dd3a-1a06-11eb-18a9-494ae7a26bc0$293776f8-1ac4-11eb-21db-9d023c09e89f$0e9a240c-1ac5-11eb-1a7e-b3c43c459484$e5ed6098-1c70-11eb-0b58-31d1830b9a10$24b0d4ba-192c-11eb-0f66-e77b544b0510$925e98d4-1c78-11eb-230d-994518f0060e$76d4351c-1c78-11eb-243f-5f6f5e485d5d$eabca8ce-1c73-11eb-26ad-271f6eba889b$aa43ef1c-1941-11eb-04de-552719a08da0$8acef4b0-1a09-11eb-068d-79a259244ed1$8018fbf0-1a05-11eb-3032-95aae07ca78f$e9c5d68c-1ac2-11eb-04ec-3b72eb133239$5a9d00f6-1ac3-11eb-01fb-53c35796e766$5aa7c4e8-1ac3-11eb-23f3-03bd58e75c4b$9df1d0f2-1ac3-11eb-0eac-d90eccca669c$bc10541e-1ac3-11eb-0b5f-916922f1a8e8$d39f149e-1ac3-11eb-39a2-41c2030d7d49$e135d490-1ac2-11eb-053e-914051f16e31$f76ab794-1ac9-11eb-26e3-b9d0baa05d49$abe3de54-1ca0-11eb-01cd-11fe798bfb97$0787f130-1aca-11eb-24b4-2ff2ddd0bc48$42d65f56-1aca-11eb-1079-e32f85554349$aa19faa4-1941-11eb-2b61-9b78aaf42876$a5847264-1ca0-11eb-0b45-eb5388f6e688$038d5e88-1ac7-11eb-2020-a9d7e19feebc$6544be90-19d3-11eb-153c-218025f738c6$a306e880-19eb-11eb-0ff1-d7ef49777f63$3663bf80-1a06-11eb-3596-8fbbed28cc38$7f286ccc-1c75-11eb-1270-95a87840b300$d70380a4-1ad0-11eb-1184-f7e9b84a83ad$55187168-1c78-11eb-1182-ab4336b577a4$2158a356-1a05-11eb-3f5b-4dfa810fc602$5501a700-19ec-11eb-0ded-53e41f7f821a$87a8e280-1c7c-11eb-2bb0-034011f6c10f$1b0c0e4c-1c73-11eb-225d-23c731455755$4d69c36a-1c73-11eb-3ae3-23900db09c27$e055262c-1c73-11eb-14de-2f537a19b012$5342430e-1c79-11eb-261c-15abd0f8cfc1$6c37c5f4-1a09-11eb-08ae-9dce752f29cb$052dc502-1c7a-11eb-2316-d3a1eef2af94$c3090e4a-1a09-11eb-0f32-d3bbfd9992e0$55f475a8-1c7a-11eb-377e-91d07fa0bdb6$63ef21c6-1c7a-11eb-2f3c-c5ac16bc289f$6cf7df1a-1c7a-11eb-230b-df1333f191c7$754eeec4-1a07-11eb-1329-8d9ae0948613$19cf420e-1c7c-11eb-1cb8-dd939fee1276$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5$e9c6a0b8-1ad0-11eb-1606-0319caf0948a$522e6b22-194d-11eb-167c-052e65f6b703$dad5acfa-194c-11eb-27f9-01f40342a681$43306bd4-194d-11eb-2e30-07eabb8b29ef$70b8401e-1c7e-11eb-16b2-d54d8f66d71a$79532662-1c7e-11eb-2edf-57e7cfbc1eda$b6614d80-194b-11eb-1edb-dba3c29672f8$e70b9e24-1a07-11eb-13db-b95c07880893$2c6defd0-1ca1-11eb-17db-d5cb498f3265$ad5a7420-1c7f-11eb-042f-115a9ef4c676$0b03316c-1c80-11eb-347c-1b5c9a0ae379$fb70cc0c-1c7f-11eb-31b5-87b168a66e19$3f727a2c-1c80-11eb-3608-e55ccb9786d9$76ef6e46-1a06-11eb-03e3-9f40a86dc9aa$a45e1012-194d-11eb-3252-bb89daed3c8d$7ba5dda0-1ad1-11eb-1c4e-2391c11f54b3$900d6622-1a08-11eb-1475-bfadc2aac749$1a43b70c-1ca3-11eb-12a5-a94ebbba0e86$3cd36ac0-1a09-11eb-1818-75b36e67594a$1ee0787e-1a08-11eb-233b-43a654f70117$7478330a-1c81-11eb-2f9f-099f1111032c$ba0a869a-1ad1-11eb-091f-916e9151f052$3aa539ce-193f-11eb-2a0f-bbc6b83528b7$caa98732-19cd-11eb-04ce-2f018275cf01$e5c0e960-19cc-11eb-107d-39b397a783ab$2a2b7284-1ade-11eb-3b71-d17fe2ca638a$e2a8d1d6-1add-11eb-0da1-cda1492a950c$337918f4-194f-11eb-0b45-b13fef3b23bf$492b257a-194f-11eb-17fb-f770b4d3da2e$885ac814-1953-11eb-30d9-85dcd198a1d8$392fe192-1ca1-11eb-36c4-f9bd2b01a5e5$251f0262-1a0c-11eb-39a3-09be67091dc8$83aa9cea-1a0c-11eb-281d-699665da2b4f$af5c6bea-1c9c-11eb-35ae-250337e4fc86$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89$71dc652e-1c9c-11eb-396c-cfd9ee2261fe$584ce620-1935-11eb-177a-f75d9ad8a399$78915326-1937-11eb-014f-fff29b3660a0$14dc73d2-1a0d-11eb-1a3c-0f793e74da9b$71b70da6-193e-11eb-0bc4-f309d24fd4ef$54b81de0-193f-11eb-004d-f90ec43588f8$6fdf613c-193f-11eb-0029-957541d2ed4d$392c25b8-1add-11eb-225d-49cfca27bef4$c25caf08-1a13-11eb-3c4d-0567faf4e662$e1cb1622-1a0c-11eb-224c-559af7b90f49$427747d6-1ca1-11eb-28ae-ff50728c84fe$dced1fd0-1c9e-11eb-3226-17dc1e09e018$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150$83acf10e-1c9e-11eb-3426-bb28e7bc6c79$13fef49c-1c9e-11eb-2aa3-d3aa2bfd0d57$c492a1f8-1a0c-11eb-2c38-5921c39cf5f8$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7e$c00eb0a6-cab2-11ea-3887-070ebd8d56e2$3dd0a48c-1ca3-11eb-1127-e7c43b5d1666$eb35ac4a-1acc-11eb-0729-ff85c8406c45$f83da7f8-1acc-11eb-02d7-f33ffe518531$bff04784-1acc-11eb-36c2-9335a58be23a$ebd05bf0-19c3-11eb-2559-7d0745a84025$ec275590-19c3-11eb-23d0-cb3d9f62ba92$ec31dce0-19c3-11eb-1487-23cc20cd5277$ec3ed530-19c3-11eb-10bb-a55e77550d1f$ec4abc12-19c3-11eb-1ca4-b5e9d3cd100b$ec57b460-19c3-11eb-2142-07cf28dcf02b$ec5d59b0-19c3-11eb-0206-cbd1a5415c28$ec698eb0-19c3-11eb-340a-e319abb8ebb5$ec7638e0-19c3-11eb-1ca1-0b3aa3b40240$ec85c940-19c3-11eb-3375-a90735beaec1$8cfa4902-1ad3-11eb-03a1-736898ff9cefpublished_objectsnbpkginstall_time_nsinstantiatedòinstalled_versionsterminal_outputsenabled·restart_recommended_msgrestart_required_msgbusy_packageswaiting_for_permission,waiting_for_permission_but_probably_disabled«cell_inputs $aa19faa4-1941-11eb-2b61-9b78aaf42876cell_id$aa19faa4-1941-11eb-2b61-9b78aaf42876codefunction intersection(photon::Photon, wall::Wall; ϵ=1e-3)
	D = intersection_distance(photon, wall)
	
	if D > ϵ
		point = photon.p + D * photon.l
		
		Intersection(wall, D, point)
	else
		Miss()
	end
endmetadatashow_logsèdisabled®skip_as_script«code_folded$d851a202-1ca0-11eb-3da0-51fcb656783ccell_id$d851a202-1ca0-11eb-3da0-51fcb656783ccodeabstract type Object endmetadatashow_logsèdisabled®skip_as_script«code_folded$392c25b8-1add-11eb-225d-49cfca27bef4cell_id$392c25b8-1add-11eb-225d-49cfca27bef4codemd"""
👉 Write a new method for `interact` that takes a `photon` and a `hit` of type `Intersection{Sphere}`, that implements refraction. It returns a new `Photon` positioned at the hit point, with the refracted velocity and the new index of refraction.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150cell_id$5895d9ae-1c9e-11eb-2f4e-671f2a7a0150code,test_lens = Sphere(
	[5, -1.5],
	3,
	1.5,
	)metadatashow_logsèdisabled®skip_as_script«code_folded$83acf10e-1c9e-11eb-3426-bb28e7bc6c79cell_id$83acf10e-1c9e-11eb-3426-bb28e7bc6c79codeXlet
	scene = [test_lens, box_scene...]
	N = 3
	
	p = plot_scene(scene, legend=false, xlim=(-11,11), ylim=(-11,11))
	
	path = accumulate(1:N; init=test_lens_photon) do old_photon, i
		step_ray(old_photon, scene)
	end
	
	line = [test_lens_photon.p, [r.p for r in path]...]
	plot!(p, first.(line), last.(line), lw=5, color=:red)
	
	p
end |> as_svgmetadatashow_logsèdisabled®skip_as_script«code_folded$2a2b7284-1ade-11eb-3b71-d17fe2ca638acell_id$2a2b7284-1ade-11eb-3b71-d17fe2ca638acodeXplot_scene([example_sphere], size=(400,200), legend=false, xlim=(-15,15), ylim=(-10,10))metadatashow_logsèdisabled®skip_as_script«code_folded$bc10541e-1ac3-11eb-0b5f-916922f1a8e8cell_id$bc10541e-1ac3-11eb-0b5f-916922f1a8e8codetypeof(test_intersection_1)metadatashow_logsèdisabled®skip_as_script«code_folded$f83da7f8-1acc-11eb-02d7-f33ffe518531cell_id$f83da7f8-1acc-11eb-02d7-f33ffe518531code"aberration_viz(aberration_viz_ior)metadatashow_logsèdisabled®skip_as_script«code_folded$76ef6e46-1a06-11eb-03e3-9f40a86dc9aacell_id$76ef6e46-1a06-11eb-03e3-9f40a86dc9aacode}function step_ray(photon::Photon, objects::Vector{<:Object})
	hit = closest_hit(photon, objects)
	
	interact(photon, hit)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$c492a1f8-1a0c-11eb-2c38-5921c39cf5f8cell_id$c492a1f8-1a0c-11eb-2c38-5921c39cf5f8code/@bind sphere_test_ray_N Slider(1:30; default=4)metadatashow_logsèdisabled®skip_as_script«code_folded$eabca8ce-1c73-11eb-26ad-271f6eba889bcell_id$eabca8ce-1c73-11eb-26ad-271f6eba889bcode=function plot_photon_arrow!(p, photon::Photon, length=2; kwargs...)
	line = [photon.p, photon.p .+ length*photon.l]
	
	plot!(p, first.(line), last.(line); lw=2, arrow=true, color=:darkred, kwargs..., label=nothing)
	scatter!(p, photon.p[1:1], photon.p[2:2]; color=:darkred, markersize=3, label=nothing, kwargs...)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$24b0d4ba-192c-11eb-0f66-e77b544b0510cell_id$24b0d4ba-192c-11eb-0f66-e77b544b0510codeُstruct Photon
	"Position vector"
	p::Vector{Float64}

	"Direction vector"
	l::Vector{Float64}

    "Current Index of Refraction"
	ior::Real
endmetadatashow_logsèdisabled®skip_as_script«code_folded$1e109620-19c4-11eb-013e-1bc95c14c2bacell_id$1e109620-19c4-11eb-013e-1bc95c14c2bacodemd"""

# **Homework 7**: _Raytracing in 2D_
`18.S191`, fall 2020

This notebook contains _built-in, live answer checks_! In some exercises you will see a coloured box, which runs a test case on your code, and provides feedback based on the result. Simply edit the code, run it, and the check runs again.

_For MIT students:_ there will also be some additional (secret) test cases that will be run as part of the grading process, and we will look at your notebook and write comments.

Feel free to ask questions!
"""metadatashow_logsèdisabled®skip_as_script«code_folded$af5c6bea-1c9c-11eb-35ae-250337e4fc86cell_id$af5c6bea-1c9c-11eb-35ae-250337e4fc86code+test_sphere = Sphere(
	[7, -6],
	2,
	1.5,
)metadatashow_logsèdisabled®skip_as_script«code_folded$6fdf613c-193f-11eb-0029-957541d2ed4dcell_id$6fdf613c-193f-11eb-0029-957541d2ed4dcodeUfunction sphere_normal_at(p::Vector{Float64}, s::Sphere)
	normalize(p - s.center)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$ec57b460-19c3-11eb-2142-07cf28dcf02bcell_id$ec57b460-19c3-11eb-2142-07cf28dcf02bcodeفkeep_working(text=md"The answer is not quite right.") = Markdown.MD(Markdown.Admonition("danger", "Keep working on it!", [text]))metadatashow_logsèdisabled®skip_as_script«code_folded$e2a8d1d6-1add-11eb-0da1-cda1492a950ccell_id$e2a8d1d6-1add-11eb-0da1-cda1492a950ccodevmd"
#### Exercise 3.1
Just like with the `Wall`, our first step is to be able to find the intersection point of a ray of light and a sphere.

This one is a bit more challenging than the intersction with the wall, in particular because there are 3 potential outcomes of a line interacting with a sphere:
- No intersection
- 1 intersection
- 2 intersections

As shown below:
"metadatashow_logsèdisabled®skip_as_script«code_folded$2c6defd0-1ca1-11eb-17db-d5cb498f3265cell_id$2c6defd0-1ca1-11eb-17db-d5cb498f3265codeV# function interact(photon::Photon, hit::Intersection{Wall})
	
# 	return missing
# endmetadatashow_logsèdisabled®skip_as_script«code_folded$3f727a2c-1c80-11eb-3608-e55ccb9786d9cell_id$3f727a2c-1c80-11eb-3608-e55ccb9786d9codeْmd"""
For convenience, we define a function `step_ray` that combines these two actions: it finds the closest hit and computes the interaction.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$d39f149e-1ac3-11eb-39a2-41c2030d7d49cell_id$d39f149e-1ac3-11eb-39a2-41c2030d7d49code/md"""
You see that `Wall` is **included in the type**. This will be very useful later, when we want to do something different _depending on the intersected object_ (wall, sphere, etc.) using multiple dispatch. We can write one method for `::Intersection{Sphere}`, and one for `::Intersection{Wall}`.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$d70380a4-1ad0-11eb-1184-f7e9b84a83adcell_id$d70380a4-1ad0-11eb-1184-f7e9b84a83adcodemd"""
 $(html"<br><br><br><br>")
#### Exercise 1.4 - _which wall?_

We are now able to find the `Intersection` of a single photon with a single wall (or detect a `Miss`). Great! To make our simulation more interesting, we will combine **multiple walls** into a single scene.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$aa43ef1c-1941-11eb-04de-552719a08da0cell_id$aa43ef1c-1941-11eb-04de-552719a08da0codemd"""
$(html"<br><br><br><br>")
#### Exercise 1.2 - _how far is the wall?_
We will write a function that finds the location where a photon hits the wall. Instead of moving the photon forward in small timesteps until we reach the wall, we will compute the intersection directly, making use of the fact that the wall is a geometrically simple object.

Our function will return one of two possible types: a `Miss` or a `Intersection`. We define these types below, and both definitions need some elaboration.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$7478330a-1c81-11eb-2f9f-099f1111032ccell_id$7478330a-1c81-11eb-2f9f-099f1111032ccodemd"""
#### Recap
In Exercise 3 and 4, we will add a `Sphere` type, and our scene will consist of `Wall`s (mirrors) and `Sphere`s (lenses). But before we move on, let's review what we have done so far.

Our main character is a `Photon`, which bounces around a scene made up of `Wall`s. 

1. Using `intersection(photon, wall::Wall)` we can find either an `Intersection` (containing the `wall`, the `distance` and the `point`) or a `Miss`.
2. Our scene is just a `Vector` or objects, and we compute the intersection between the photon and every object.
3. By adding `Base.isless` methods we have told Julia how to compare hit/miss results, and we get the closest one using `minimum(all_intersections)`.
4. We wrote a function `interact(photon, hit::Intersection{Wall})` that returns a new photon after interacting with a wall collision.

We repeat these four steps to trace a ray through the scene.

---

In the next two exercises we will reuse some of the functionality that we have already written, using multiple dispatch! For example, we add a method `intersection(photon, sphere::Sphere)`, and steps 2 and 3 magically also work with spheres!


"""
# We have a type `Photon` and a type `Wall`, and umetadatashow_logsèdisabled®skip_as_script«code_folded$bff04784-1acc-11eb-36c2-9335a58be23acell_id$bff04784-1acc-11eb-36c2-9335a58be23acodefunction aberration_viz(ior)
	s = Sphere([5,0], 1, ior)
	aberration_scene = [s, box_scene...]
	
	p = plot_scene(aberration_scene, legend=false, xlim=(3,8), ylim=(-1.5,1.5))
	
	for y in LinRange(-0.9, 0.9, 8)
		start = Photon([0,y], [1,0], 1.0)
		
		path = accumulate(1:3; init=start) do old_photon, i
			step_ray(old_photon, aberration_scene)
		end
		
		line = [start.p, [r.p for r in path]...]
		plot!(p, first.(line), last.(line), lw=2, color=:darkred)
	end

	p |> as_svg
endmetadatashow_logsèdisabled®skip_as_script«code_folded$c3090e4a-1a09-11eb-0f32-d3bbfd9992e0cell_id$c3090e4a-1a09-11eb-0f32-d3bbfd9992e0codesort(all_intersections)metadatashow_logsèdisabled®skip_as_script«code_folded$5f551588-1ac4-11eb-1f86-197442f1ef1dcell_id$5f551588-1ac4-11eb-1f86-197442f1ef1dcodemd"""
In our simulations, we will enclose our scene in a box of **four walls**, to make sure that no rays can escape the scene. We have written this box (i.e. vector of walls) below, but we are still missing the roof.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$584ce620-1935-11eb-177a-f75d9ad8a399cell_id$584ce620-1935-11eb-177a-f75d9ad8a399codemd"""
 $(html"<br><br><br><br>")
## **Exercise 4:** _Lenses_

For this, we will start with refraction from the surface of water and then move on to a spherical lens. 

So, how does refraction work? Well, every time light enters a new medium that is more dense than air, it will bend towards the normal to the surface, like so:

$(RemoteResource("https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Snells_law2.svg/800px-Snells_law2.svg.png", :width=>200, :style=>"display: block; margin: auto;"))
"""metadatashow_logsèdisabled®skip_as_script«code_folded$c00eb0a6-cab2-11ea-3887-070ebd8d56e2cell_id$c00eb0a6-cab2-11ea-3887-070ebd8d56e2codeemd"
#### Spherical aberration
Now we can put it all together into an image of spherical aberration!
"metadatashow_logsèdisabled®skip_as_script«code_folded$7f286ccc-1c75-11eb-1270-95a87840b300cell_id$7f286ccc-1c75-11eb-1270-95a87840b300code3@bind dizzy_angle Slider(0:0.0001:2π, default=2.2)metadatashow_logsèdisabled®skip_as_script«code_folded$0787f130-1aca-11eb-24b4-2ff2ddd0bc48cell_id$0787f130-1aca-11eb-24b4-2ff2ddd0bc48codelet
	p = Photon([5,0], [1,0], 1.0)
	w = Wall([10,10], normalize([-1,-1]))
	
	result = intersection_distance(p, w)
	
	
	if result isa Missing
		still_missing()
	elseif !(result isa Real)
		keep_working(md"You need to return a number.")
	else
		if abs(result - (20 - 5)) > 0.1
			if abs(-result - (20 - 5)) > 0.1
				keep_working(md"The returned distance is not correct.")
			else
				keep_working(md"Did you forget the minus sign?")
			end
		else
			correct()
		end
	end
endmetadatashow_logsèdisabled®skip_as_script«code_folded$ec5d59b0-19c3-11eb-0206-cbd1a5415c28cell_id$ec5d59b0-19c3-11eb-0206-cbd1a5415c28codeyays = [md"Fantastic!", md"Splendid!", md"Great!", md"Yay ❤", md"Great! 🎉", md"Well done!", md"Keep it up!", md"Good job!", md"Awesome!", md"You got the right answer!", md"Let's move on to the next section."]metadatashow_logsèdisabled®skip_as_script«code_folded$f76ab794-1ac9-11eb-26e3-b9d0baa05d49cell_id$f76ab794-1ac9-11eb-26e3-b9d0baa05d49codeوfunction intersection_distance(photon::Photon, wall::Wall)
	-dot(photon.p - wall.position, wall.normal) / dot(photon.l, wall.normal)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$e1cb1622-1a0c-11eb-224c-559af7b90f49cell_id$e1cb1622-1a0c-11eb-224c-559af7b90f49codefunction interact(photon::Photon, hit::Intersection{Sphere})
	old_ior = photon.ior
	new_ior = if photon.ior == 1.0
		hit.object.ior
	else
		1.0
	end
	
	normal = sphere_normal_at(hit.point, hit.object)
	
	Photon(hit.point, refract(photon.l, normal, old_ior, new_ior), new_ior)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$dad5acfa-194c-11eb-27f9-01f40342a681cell_id$dad5acfa-194c-11eb-27f9-01f40342a681codemd"
#### Exercise 2.1 - _reflect_

For this one, we need to implement a reflection function. This one is way easier than refraction. All we need to do is find how much of the light is moving in the direction of the surface's normal and subtract that twice.

$\ell_2 = \ell_1 - 2(\ell_1\cdot \hat n)\hat n$

Where $\ell_1$ and $\ell_2$ are the photon directions before and after the reflection off a surface with normal ``\hat{n}``. Let's write that in code:
"metadatashow_logsèdisabled®skip_as_script«code_folded$3cd36ac0-1a09-11eb-1818-75b36e67594acell_id$3cd36ac0-1a09-11eb-1818-75b36e67594acode/@bind mirror_test_ray_N Slider(1:30; default=4)metadatashow_logsèdisabled®skip_as_script«code_folded$55187168-1c78-11eb-1182-ab4336b577a4cell_id$55187168-1c78-11eb-1182-ab4336b577a4code0philip = Photon([3, 0], normalize([.5,-1]), 1.0)metadatashow_logsèdisabled®skip_as_script«code_folded$b6614d80-194b-11eb-1edb-dba3c29672f8cell_id$b6614d80-194b-11eb-1edb-dba3c29672f8codemd"""
#### Exercise 2.2 - _step_

Our event-driven simulation is a stepping method, but instead of taking small steps in time, we take large steps from one collision event to the next.

👉 Write a function `interact` that takes a photon and a `hit::Intersection{Wall}` and returns a new `Photon` at the next step. The new photon is located at the hit point, its direction is reflected off the wall's normal and the `photon.ior` is reused.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$e055262c-1c73-11eb-14de-2f537a19b012cell_id$e055262c-1c73-11eb-14de-2f537a19b012codelet
	p = plot_scene(ex_1_scene)
	
	plot_photon_arrow!(p, philip, 4; label="Philip")
	for (i,hit) in enumerate(all_intersections)
		if hit isa Intersection
			scatter!(p, hit.point[1:1], hit.point[2:2], label="intersection $i")
		end
	end
	p |> as_svg
endmetadatashow_logsèdisabled®skip_as_script«code_folded$038d5e88-1ac7-11eb-2020-a9d7e19feebccell_id$038d5e88-1ac7-11eb-2020-a9d7e19feebccodelet
	p = Photon([5,0], [1,0], 1.0)
	w = Wall([10,10], normalize([-1,-1]))
	
	result = intersection(p, w)
	
	
	if result isa Missing
		still_missing()
	elseif !(result isa Miss || result isa Intersection)
		keep_working(md"You need to return a `Miss` or a `Intersection`.")
	else
		if result isa Miss
			keep_working(md"You returned a `Miss` for a photon that hit the wall.")
		else
			if abs(result.distance - (20 - 5)) > 0.1
				keep_working(md"The returned distance is not correct.")
			else
				p = Photon([5,0], [-1,0], 1.0)
				result = intersection(p, w)
				
				if !(result isa Miss)
					almost(md"What should happen when ``D < 0``?")
				else
					p = Photon([10,10], [1,0], 1.0)
					w = Wall([10,10], normalize([-1,-1]))
					
					result = intersection(p, w)
					if result isa Miss
						correct()
					else
						almost(md"Remember to use ``\epsilon``.")
					end
				end
			end
		end
	end
endmetadatashow_logsèdisabled®skip_as_script«code_folded$1e202680-19c4-11eb-29a7-99061b886b3ccell_id$1e202680-19c4-11eb-29a7-99061b886b3ccode# edit the code below to set your name and kerberos ID (i.e. email without @mit.edu)

student = (name = "Jazzy Doe", kerberos_id = "jazz")

# you might need to wait until all other cells in this notebook have completed running. 
# scroll around the page to see what's upmetadatashow_logsèdisabled®skip_as_script«code_folded$293776f8-1ac4-11eb-21db-9d023c09e89fcell_id$293776f8-1ac4-11eb-21db-9d023c09e89fcode٣md"""
👉 Modify the definition of `box_scene` to be a vector of 4 walls, instead of 3. The fourth wall should be positioned at `[0,10]`, and point downwards.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$6de1bafc-1a01-11eb-3d67-c9d9b6c3cea8cell_id$6de1bafc-1a01-11eb-3d67-c9d9b6c3cea8codeFfunction plot_object!(p, wall::Wall)
	# old_xlims = xlims(p)
	# old_ylims = ylims(p)
	
	adjacent = [wall.normal[2], -wall.normal[1]]
	
	a = wall.position + adjacent * 20
	b = wall.position - adjacent * 20
	
	line = [a, b]
	
	plot!(p, first.(line), last.(line), label="Wall")
	# xlims!(p, old_xlims)
	# xlims!(p, old_xlims)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$e5ed6098-1c70-11eb-0b58-31d1830b9a10cell_id$e5ed6098-1c70-11eb-0b58-31d1830b9a10codePmd"""
In the next exercise, we will find the intersection of a ray of light and a wall. To represent light, we create a `struct` called **`Photon`**, holding the position and travel direction of a single particle of light. We also include the _index of refraction_ of the medium it is currently traveling in, we will use this later.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$e9c5d68c-1ac2-11eb-04ec-3b72eb133239cell_id$e9c5d68c-1ac2-11eb-04ec-3b72eb133239code٧md"""
##### `Miss` 
is a struct with _no fields_. It does not contain any information, except the fact that it is a `Miss`. You create a new `Miss` object like so:
"""metadatashow_logsèdisabled®skip_as_script«code_folded$492b257a-194f-11eb-17fb-f770b4d3da2ecell_id$492b257a-194f-11eb-17fb-f770b4d3da2ecode
/md"""
So we need a way of finding all of these.

To start, let's look at the intersection of a **point** and a sphere. So long as the relative distance between the photon and the sphere's center satisfies the sphere equation, we can be considered inside of the sphere. More specifically, we are inside the sphere if:

$(x_s-x_p)^2+(y_s-y_p) < r^2.$

where the $s$ and $p$ subscripts represent the sphere and photon, respectively. We know we are *on* the sphere if

$(x_s-x_p)^2+(y_s-y_p) = r^2.$

Let's rewrite this in vector notation as:

$(\mathbf{R} - \mathbf{S})\cdot(\mathbf{R} - \mathbf{S}) = r^2,$

where $\mathbf{R}$ and $\mathbf{S}$ are the $x$, $y$, and $z$ location of the photon and sphere, respectively.

Returning to the timestepping example from above, we know that our ray is moving forward with time such that $\mathbf{R} = \mathbf{R}_0 + v dt = \mathbf{R}_0 + \ell t$. We now need to ask ourselves if there is any time when our ray interacts with the sphere. Plugging this in to the dot product from above, we get

$(\mathbf{R}_0 + \ell t - \mathbf{S})\cdot(\mathbf{R}_0 + \ell t - \mathbf{S}) = r^2$

To solve this for $t$, we first need to reorder everything into the form of a polynomial, such that:

$t^2(\ell\cdot\ell)+2t\ell\cdot(\mathbf{R_0}-\mathbf{S})+(\mathbf{R}_0-\mathbf{S})\cdot(\mathbf{R}_0-\mathbf{S}) - r^2=0.$

This can be solved with the good ol' fashioned quadratic equation:

$\frac{-b\pm\sqrt{b^2-4ac}}{2a},$

where $a = \ell\cdot\ell$, $b = 2\ell\cdot(\mathbf{R}_0-\mathbf{S})$, and $c=(\mathbf{R}_0-\mathbf{S})\cdot(\mathbf{R}_0-\mathbf{S}) - r^2$

If the quadratic equation returns no roots, there is no intersection. If it returns 1 root, the ray just barely hits the edge of the sphere. If it returns 2 roots, it goes right through!

The easiest way to check this is by looking at the discriminant $d = b^2-4ac$.

```math
\text{Number of roots} = \left\{
    \begin{align}
       &0, \qquad \text{if } d < 0 \\
       &1, \qquad \text{if } d = 0 \\
       &2, \qquad \text{if } d > 0 \\
    \end{align}
\right.
```

In the case that there are 2 roots, the second root corresponds to when the ray would interact with the far edge of the sphere *if there were no refraction or reflection!*; therefore, we only care about returning the closest point.

With all this said, we are ready to write some code.

👉 Write a new method `intersection` that takes a `Photon` and a `Sphere`, and returns either a `Miss` or an `Intersection`, using the method described above. Go back to Exercise 1.3 where we defined the first method, and see how we adapt it to a sphere.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$0393dd3a-1a06-11eb-18a9-494ae7a26bc0cell_id$0393dd3a-1a06-11eb-18a9-494ae7a26bc0code3plot_scene(box_scene, legend=false, size=(400,200))metadatashow_logsèdisabled®skip_as_script«code_folded$ec698eb0-19c3-11eb-340a-e319abb8ebb5cell_id$ec698eb0-19c3-11eb-340a-e319abb8ebb5codeYcorrect(text=rand(yays)) = Markdown.MD(Markdown.Admonition("correct", "Got it!", [text]))metadatashow_logsèdisabled®skip_as_script«code_folded$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8cell_id$65aec4fc-1c9e-11eb-1c5a-6dd7c533d3b8code,test_lens_photon = Photon([0,0], [1,0], 1.0)metadatashow_logsèdisabled®skip_as_script«code_folded$19cf420e-1c7c-11eb-1cb8-dd939fee1276cell_id$19cf420e-1c7c-11eb-1cb8-dd939fee1276code[# function closest_hit(photon::Photon, objects::Vector{<:Object})
	
# 	return missing
# endmetadatashow_logsèdisabled®skip_as_script«code_folded$71dc652e-1c9c-11eb-396c-cfd9ee2261fecell_id$71dc652e-1c9c-11eb-396c-cfd9ee2261fecodeٳmd"""
👉 Change the definition of `test_sphere` to test different situations:
- Hit the circle
- Miss the circle
- Start inside the cricle (you should hit the exit boundary)
"""metadatashow_logsèdisabled®skip_as_script«code_folded$ac9bafaa-1ac4-11eb-16c4-0df8133f9c98cell_id$ac9bafaa-1ac4-11eb-16c4-0df8133f9c98codeٝ# box_scene = [
# 	Wall(
# 		[10,0],
# 		[-1,0]
# 		),
# 	Wall(
# 		[-10,0],
# 		[1,0]
# 		),
# 	Wall(
# 		[0,-10],
# 		[0,1]
# 		),
# 	# your code here
# 	]metadatashow_logsèdisabled®skip_as_script«code_folded$dced1fd0-1c9e-11eb-3226-17dc1e09e018cell_id$dced1fd0-1c9e-11eb-3226-17dc1e09e018code_md"""
To test your code, modify the definition of `test_lens_photon` and `test_lens` below.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$a306e880-19eb-11eb-0ff1-d7ef49777f63cell_id$a306e880-19eb-11eb-0ff1-d7ef49777f63code2test_intersection = intersection(dizzy, test_wall)metadatashow_logsèdisabled®skip_as_script«code_folded$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7ecell_id$b65d9a0c-1a0c-11eb-3cd5-e5a2c4302c7ecode_let
	scene = [test_lens, box_scene...]
	p = plot_scene(scene, legend=false, xlim=(-11,11), ylim=(-11,11))
	
	path = accumulate(1:sphere_test_ray_N; init=test_lens_photon) do old_photon, i
		step_ray(old_photon, scene)
	end
	
	line = [test_lens_photon.p, [r.p for r in path]...]
	plot!(p, first.(line), last.(line), lw=5, color=:red)
	
	p
end |> as_svgmetadatashow_logsèdisabled®skip_as_script«code_folded$ec31dce0-19c3-11eb-1487-23cc20cd5277cell_id$ec31dce0-19c3-11eb-1487-23cc20cd5277codeEhint(text) = Markdown.MD(Markdown.Admonition("hint", "Hint", [text]))metadatashow_logsèdisabled®skip_as_script«code_folded$9df1d0f2-1ac3-11eb-0eac-d90eccca669ccell_id$9df1d0f2-1ac3-11eb-0eac-d90eccca669ccode=test_intersection_1 = Intersection(test_wall, 3.0, [1.0,2.0])metadatashow_logsèdisabled®skip_as_script«code_folded$fb70cc0c-1c7f-11eb-31b5-87b168a66e19cell_id$fb70cc0c-1c7f-11eb-31b5-87b168a66e19codeٴlet
	p = plot_scene(ex_1_scene)
	
	plot_photon_arrow!(p, philip, 4; label="Philip")	
	plot_photon_arrow!(p, test_new_photon, 4; label="Philip after interaction")
	
	p |> as_svg
endmetadatashow_logsèdisabled®skip_as_script«code_folded$ec7638e0-19c3-11eb-1ca1-0b3aa3b40240cell_id$ec7638e0-19c3-11eb-1ca1-0b3aa3b40240codeٱnot_defined(variable_name) = Markdown.MD(Markdown.Admonition("danger", "Oopsie!", [md"Make sure that you define a variable called **$(Markdown.Code(string(variable_name)))**"]))metadatashow_logsèdisabled®skip_as_script«code_folded$885ac814-1953-11eb-30d9-85dcd198a1d8cell_id$885ac814-1953-11eb-30d9-85dcd198a1d8codefunction intersection(photon::Photon, sphere::Sphere; ϵ=1e-3)
	a = dot(photon.l, photon.l)
	b = 2 * dot(photon.l, photon.p - sphere.center)
	c = dot(photon.p - sphere.center, photon.p - sphere.center) - sphere.radius^2
	
	d = b^2 - 4*a*c
	
	if d <= 0
		Miss()
	else
		t1 = (-b-sqrt(d))/2a
		t2 = (-b+sqrt(d))/2a
		
		t = if t1 > ϵ
			t1
		elseif t2 > ϵ
			t2
		else
			return Miss()
		end
		
		point = photon.p + t * photon.l
		
		Intersection(sphere, t, point)
	end
endmetadatashow_logsèdisabled®skip_as_script«code_folded$3dd0a48c-1ca3-11eb-1127-e7c43b5d1666cell_id$3dd0a48c-1ca3-11eb-1127-e7c43b5d1666codemd"""
👉 Recreate the spherical aberration figure from [the lecture](https://www.youtube.com/watch?v=MkkZb5V6HqM) (around the end of the video), and make the index of refraction interactive using a `Slider`. _Or make something else!_
"""metadatashow_logsèdisabled®skip_as_script«code_folded$63ef21c6-1c7a-11eb-2f3c-c5ac16bc289fcell_id$63ef21c6-1c7a-11eb-2f3c-c5ac16bc289fcodeminimum(all_intersections)metadatashow_logsèdisabled®skip_as_script«code_folded$c3e52bf2-ca9a-11ea-13aa-03a4335f2906cell_id$c3e52bf2-ca9a-11ea-13aa-03a4335f2906codebegin
	import Pkg
	Pkg.activate(mktempdir())
	Pkg.add([
			Pkg.PackageSpec(name="Plots", version="1.6-1"),
			Pkg.PackageSpec(name="PlutoUI", version="0.6.8-0.6"),
			])
	using Plots
	using PlutoUI
	using LinearAlgebra
endmetadatashow_logsèdisabled®skip_as_script«code_folded$a5847264-1ca0-11eb-0b45-eb5388f6e688cell_id$a5847264-1ca0-11eb-0b45-eb5388f6e688codeV# function intersection(photon::Photon, wall::Wall; ϵ=1e-3)
	
# 	return missing
# endmetadatashow_logsèdisabled®skip_as_script«code_folded$5342430e-1c79-11eb-261c-15abd0f8cfc1cell_id$5342430e-1c79-11eb-261c-15abd0f8cfc1code)md"""
So which of these **five** results should we use to determine what the photon does next? It should be the _closest intersection_.

Because we used two different types for hits and misses, we can express this in a charming way. We define what it means for one to be better than the other:
"""metadatashow_logsèdisabled®skip_as_script«code_folded$392fe192-1ca1-11eb-36c4-f9bd2b01a5e5cell_id$392fe192-1ca1-11eb-36c4-f9bd2b01a5e5codeZ# function intersection(photon::Photon, sphere::Sphere; ϵ=1e-3)
	
# 	return missing
# endmetadatashow_logsèdisabled®skip_as_script«code_folded$1df32310-19c4-11eb-0824-6766cd21aaf4cell_id$1df32310-19c4-11eb-0824-6766cd21aaf4codemd"_homework 7, version 1_"metadatashow_logsèdisabled®skip_as_script«code_folded$e70b9e24-1a07-11eb-13db-b95c07880893cell_id$e70b9e24-1a07-11eb-13db-b95c07880893codeمfunction interact(photon::Photon, hit::Intersection{Wall})
	
	Photon(hit.point, reflect(photon.l, hit.object.normal), photon.ior)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$c25caf08-1a13-11eb-3c4d-0567faf4e662cell_id$c25caf08-1a13-11eb-3c4d-0567faf4e662codeqmd"""
You can use `ray.ior == 1.0` to check whether this is a ray _entering_ or _leaving_ the sphere.
""" |> hintmetadatashow_logsèdisabled®skip_as_script«code_folded$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5cell_id$b8cd4112-1c7c-11eb-3b2d-29170ad9beb5code.test_closest = closest_hit(philip, ex_1_scene)metadatashow_logsèdisabled®skip_as_script«code_folded$ba0a869a-1ad1-11eb-091f-916e9151f052cell_id$ba0a869a-1ad1-11eb-091f-916e9151f052codemd"""
 $(html"<br><br><br><br>")

## **Exercise 3:** _Spheres_
Now that we know how to bounce light around mirrors, we want to simulate a _spherical lens_ to make things more interesting. Let's define a `Sphere`. 
"""metadatashow_logsèdisabled®skip_as_script«code_folded$925e98d4-1c78-11eb-230d-994518f0060ecell_id$925e98d4-1c78-11eb-230d-994518f0060ecode6test_photon = Photon([-1, 2], normalize([1,-.8]), 1.0)metadatashow_logsèdisabled®skip_as_script«code_folded$43306bd4-194d-11eb-2e30-07eabb8b29efcell_id$43306bd4-194d-11eb-2e30-07eabb8b29efcodeRreflect(ℓ₁::Vector, n̂::Vector)::Vector = ℓ₁ - 2 * dot(ℓ₁, n̂) * n̂metadatashow_logsèdisabled®skip_as_script«code_folded$6544be90-19d3-11eb-153c-218025f738c6cell_id$6544be90-19d3-11eb-153c-218025f738c6codeUdizzy = Photon([0, 1], normalize([cos(dizzy_angle + π),sin(dizzy_angle + π)]), 1.0)metadatashow_logsèdisabled®skip_as_script«code_folded$522e6b22-194d-11eb-167c-052e65f6b703cell_id$522e6b22-194d-11eb-167c-052e65f6b703codeJmd"""
Now we're going to make a bold claim: All walls in this simulation are mirrors. This is just for simplicity so we don't need to worry about rays stopping at the boundaries.

We are already able to find the intersection of a light ray with a mirror, but we still need to tell our friendly computer what a _reflection_ is.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$251f0262-1a0c-11eb-39a3-09be67091dc8cell_id$251f0262-1a0c-11eb-39a3-09be67091dc8code7sphere_intersection = intersection(philip, test_sphere)metadatashow_logsèdisabled®skip_as_script«code_folded$8acef4b0-1a09-11eb-068d-79a259244ed1cell_id$8acef4b0-1a09-11eb-068d-79a259244ed1codestruct Miss endmetadatashow_logsèdisabled®skip_as_script«code_folded$8018fbf0-1a05-11eb-3032-95aae07ca78fcell_id$8018fbf0-1a05-11eb-3032-95aae07ca78fcodeXstruct Intersection{T<:Object}
	object::T
	distance::Float64
	point::Vector{Float64}
endmetadatashow_logsèdisabled®skip_as_script«code_folded$2158a356-1a05-11eb-3f5b-4dfa810fc602cell_id$2158a356-1a05-11eb-3f5b-4dfa810fc602code&ex_1_scene = [box_scene..., test_wall]metadatashow_logsèdisabled®skip_as_script«code_folded$99c61b74-1941-11eb-2323-2bdb7c120a28cell_id$99c61b74-1941-11eb-2323-2bdb7c120a28codekstruct Wall <: Object
	"Position"
	position::Vector{Float64}

	"Normal vector"
	normal::Vector{Float64}
endmetadatashow_logsèdisabled®skip_as_script«code_folded$78915326-1937-11eb-014f-fff29b3660a0cell_id$78915326-1937-11eb-014f-fff29b3660a0codemd"""
This can be described by Snell's law:

$\frac{n_1}{n_2} = \frac{v_2}{v_1} = \frac{\sin(\theta_2)}{\sin(\theta_1)}$

Here, $n$ is the index of refraction, $v$ is the speed (not velocity (sorry for the notation!)), and $\theta$ is the angle with respect to the surface normal. Any variables with an subscript of 1 are in the outer medium (air), and any variables with a subscript 2 are in the inner medium (water).

This means that we can find the angle of the new ray of light as

$\sin(\theta_2) = \frac{n_1}{n_2}\sin(\theta_1)$

The problem is that $\sin$ is slow, so we typically want to rewrite this in terms of vector operations. This means that we want to rewrite everything to be in terms of dot products, but because $A\cdot B = |A||B|cos(\theta)$, we really want to rewrite everything in terms of cosines first. So, using the fact that $\sin(\theta)^2 + \cos(\theta)^2 = 1$, we can rewrite the above equation to be:

$\sin(\theta_2) = \frac{n_1}{n_2}\sqrt{1-\cos(\theta_1)^2}$

We also know that 

$\cos(\theta_2) = \sqrt{1-\sin(\theta_2)^2} = \sqrt{1-\left(\frac{n_1}{n_2}\right)^2\left(1-\cos(\theta_1)^2\right)}.$

Finally, we know that the new light direction should be the same as the old one, but shifted towards (or away) from the normal according to the new refractive index.
In particular:

$n_2 \ell _2 = {n_1} \ell _1 + (n_1\cos(\theta_1)-n_2\cos(\theta_2))\hat n,$

where $\hat n$ is the normal from the water's surface. Rewriting this, we find:

$\ell _2 = \left(\frac{n_1}{n_2}\right) \ell _1 + \left(\left(\frac{n_1}{n_2}\right)\cos(\theta_1)-\cos(\theta_2)\right)\hat n.$

Now, we already know $\cos(\theta_2)$ in terms of $\cos(\theta_1)$, so we can just plug that in... But first, let's do some simplifications, such that 

$r = \frac{n_1}{n_2}$

and

$c = -\hat n \cdot \ell_1.$

Now, we can rewrite everything such that

$\ell_2 = r\ell_1 + \left(rc-\sqrt{1-r^2(1-c^2)}\right)\hat n.$

The last step is to write this in code with a function that takes the light direction, the normal, and old and new indices of refraction:
"""metadatashow_logsèdisabled®skip_as_script«code_folded$71b70da6-193e-11eb-0bc4-f309d24fd4efcell_id$71b70da6-193e-11eb-0bc4-f309d24fd4efcodemd"

Now to move on to lenses. Like in lecture, we will focus exclusively on spherical lenses. Ultimately, there isn't a big difference between a lens and a spherical drop of water. It just has a slightly different refractive index and it's normal is defined slightly differently.
"metadatashow_logsèdisabled®skip_as_script«code_folded$ad5a7420-1c7f-11eb-042f-115a9ef4c676cell_id$ad5a7420-1c7f-11eb-042f-115a9ef4c676codeٔhint(md"`Intersection` contains the intersected object, so you can retrieve the wall using `hit.object`, and the normal using `hit.object.normal`.")metadatashow_logsèdisabled®skip_as_script«code_folded$4d69c36a-1c73-11eb-3ae3-23900db09c27cell_id$4d69c36a-1c73-11eb-3ae3-23900db09c27codeKmd"""
There are two misses and three intersections. Just what we hoped!
"""metadatashow_logsèdisabled®skip_as_script«code_folded$55f475a8-1c7a-11eb-377e-91d07fa0bdb6cell_id$55f475a8-1c7a-11eb-377e-91d07fa0bdb6code*md"""
And we can take the **minimum**:
"""metadatashow_logsèdisabled®skip_as_script«code_folded$ebd05bf0-19c3-11eb-2559-7d0745a84025cell_id$ebd05bf0-19c3-11eb-2559-7d0745a84025codeif student.name == "Jazzy Doe" || student.kerberos_id == "jazz"
	md"""
	!!! danger "Before you submit"
	    Remember to fill in your **name** and **Kerberos ID** at the top of this notebook.
	"""
endmetadatashow_logsèdisabled®skip_as_script«code_folded$5aa7c4e8-1ac3-11eb-23f3-03bd58e75c4bcell_id$5aa7c4e8-1ac3-11eb-23f3-03bd58e75c4bcodemd"""
##### `Intersection`
is a **parametric type**. The first field (`object`) is of type `T`, and `T` is a subtype of `Object`. Have a look at the definition above, and take note of how we write such statements in Julia syntax.

We also could have used `Object` directly as the type for the field `object`, but what's special about parametric types is that `T` becomes "part of the type". Let's have a look at an example:
"""metadatashow_logsèdisabled®skip_as_script«code_folded$87a8e280-1c7c-11eb-2bb0-034011f6c10fcell_id$87a8e280-1c7c-11eb-2bb0-034011f6c10fcode٬md"""
When we shoot a photon at the scene, we compute the intersections between the photon and every object in the scene. Click on the vector below to see all elements:
"""metadatashow_logsèdisabled®skip_as_script«code_folded$754eeec4-1a07-11eb-1329-8d9ae0948613cell_id$754eeec4-1a07-11eb-1329-8d9ae0948613code}function closest_hit(photon::Photon, objects::Vector{<:Object})
	hits = intersection.([photon], objects)
	
	minimum(hits)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$e135d490-1ac2-11eb-053e-914051f16e31cell_id$e135d490-1ac2-11eb-053e-914051f16e31codemd"""
 $(html"<br><br>")

##### Wall geometry
So, how do we find the location where it hits the wall? Well, because our walls are infinitely long, we are essentially trying to find the point at which 2 lines intersect.

To do this, we can combine a few dot products: one to find how far away we are, and another to scale that distance. Mathematically, it would look like:

$D = -\frac{(p_{\text{ray}} - p_{\text{wall}})\cdot \hat n}{\hat \ell \cdot \hat n},$

where $p$ is the position, $\hat \ell$ is the direction of the light, and $\hat n$ is the normal vector for the wall. subscripts $i$, $r$, and $w$ represent the intersection point, ray, and wall respectively. The result is $D$, the amount that the photon needs to travel until it hits the wall.

👉 Write a function `intersection_distance` that implements this formula, and returns $D$. You can use `dot(a,b)` to compute the vector dot product ``a \cdot b``.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$d257a728-1a04-11eb-281d-bde30644f5f5cell_id$d257a728-1a04-11eb-281d-bde30644f5f5codeٌbox_scene = [
	Wall(
		[10,0],
		[-1,0]
		),
	Wall(
		[-10,0],
		[1,0]
		),
	Wall(
		[0,-10],
		[0,1]
		),
	Wall(
		[0,10],
		[0,-1]
		),
	]metadatashow_logsèdisabled®skip_as_script«code_folded$8cfa4902-1ad3-11eb-03a1-736898ff9cefcell_id$8cfa4902-1ad3-11eb-03a1-736898ff9cefcodeRTODO_note(text) = Markdown.MD(Markdown.Admonition("warning", "TODO note", [text]))metadatashow_logsèdisabled®skip_as_script«code_folded$ec85c940-19c3-11eb-3375-a90735beaec1cell_id$ec85c940-19c3-11eb-3375-a90735beaec1codehTODO = html"<span style='display: inline; font-size: 2em; color: purple; font-weight: 900;'>TODO</span>"metadatashow_logsèdisabled®skip_as_script«code_folded$6c37c5f4-1a09-11eb-08ae-9dce752f29cbcell_id$6c37c5f4-1a09-11eb-08ae-9dce752f29cbcodebegin
	Base.isless(a::Miss, b::Miss) = false
	Base.isless(a::Miss, b::Intersection) = false
	Base.isless(a::Intersection, b::Miss) = true
	Base.isless(a::Intersection, b::Intersection) = a.distance < b.distance
endmetadatashow_logsèdisabled®skip_as_script«code_folded$79532662-1c7e-11eb-2edf-57e7cfbc1edacell_id$79532662-1c7e-11eb-2edf-57e7cfbc1edacodemetadatashow_logsèdisabled®skip_as_script«code_folded$76d4351c-1c78-11eb-243f-5f6f5e485d5dcell_id$76d4351c-1c78-11eb-243f-5f6f5e485d5dcodejlet
	p = plot_scene(box_scene, legend=false, size=(400,200))
	plot_photon_arrow!(p, test_photon, 7)
	p
endmetadatashow_logsèdisabled®skip_as_script«code_folded$3663bf80-1a06-11eb-3596-8fbbed28cc38cell_id$3663bf80-1a06-11eb-3596-8fbbed28cc38codelet
	p = plot_scene([test_wall])
	plot_photon_arrow!(p, dizzy, 4; label="Philip")
	
	try
		scatter!(p, test_intersection.point[1:1], test_intersection.point[2:2], label="Intersection point")
	catch
	end
	
	p
endmetadatashow_logsèdisabled®skip_as_script«code_folded$caa98732-19cd-11eb-04ce-2f018275cf01cell_id$caa98732-19cd-11eb-04ce-2f018275cf01codefunction plot_object!(p::Plots.Plot, sphere::Sphere)
	points = [
		sphere.center .+ sphere.radius .* [cos(ϕ), sin(ϕ)]
		for ϕ in LinRange(0,2π,50)
	]
	
	plot!(p, points .|> first, points .|> last, seriestype=:shape, label="Sphere", fillopacity=0.2)
	p
endmetadatashow_logsèdisabled®skip_as_script«code_folded$427747d6-1ca1-11eb-28ae-ff50728c84fecell_id$427747d6-1ca1-11eb-28ae-ff50728c84fecodeX# function interact(photon::Photon, hit::Intersection{Sphere})
	
# 	return missing
# endmetadatashow_logsèdisabled®skip_as_script«code_folded$052dc502-1c7a-11eb-2316-d3a1eef2af94cell_id$052dc502-1c7a-11eb-2316-d3a1eef2af94codeيmd"""
And we can now use all of Julia's built in functions to work with a vector of hit/miss results. For example, we can **sort** it:
"""metadatashow_logsèdisabled®skip_as_script«code_folded$3aa539ce-193f-11eb-2a0f-bbc6b83528b7cell_id$3aa539ce-193f-11eb-2a0f-bbc6b83528b7code~struct Sphere <: Object
	# Position
	center::Vector{Float64}
	
	# Radius
	radius::Real
	
	# Index of refraction
	ior::Real
endmetadatashow_logsèdisabled®skip_as_script«code_folded$a45e1012-194d-11eb-3252-bb89daed3c8dcell_id$a45e1012-194d-11eb-3252-bb89daed3c8dcodeMmd"
Great! Next, we will repeat this action to trace the path of a photon. 
"metadatashow_logsèdisabled®skip_as_script«code_folded$e5c0e960-19cc-11eb-107d-39b397a783abcell_id$e5c0e960-19cc-11eb-107d-39b397a783abcode.example_sphere = Sphere(
	[7, -6],
	2,
	1.5,
)metadatashow_logsèdisabled®skip_as_script«code_folded$92290e54-1940-11eb-1a24-5d1eaee9f6cacell_id$92290e54-1940-11eb-1a24-5d1eaee9f6cacodemd"""
## **Exercise 1:** _Walls_

As discussed the lecture, event-driven simulations are the traditional method used for raytracing. Here, we look for any objects in our path and _analytically_ determine how far away they are. From there, we take one big timestep all the way to the surface boundary, calculate refraction or reflection to see what direction we are moving in, and then seek out any other object we could potentially run into.

So let's start simple with determining when a ray of light could intersect with a wall.

#### Exercise 1.1 - _what is a wall?_

To start, let's create the concept of a wall. For our purposes, walls will be infinitely long, so we only need to create an object that has a position and a normal vector at that position:
"""metadatashow_logsèdisabled®skip_as_script«code_folded$1e01c912-19c4-11eb-269a-9796cccdf274cell_id$1e01c912-19c4-11eb-269a-9796cccdf274code# WARNING FOR OLD PLUTO VERSIONS, DONT DELETE ME

html"""
<script>
const warning = html`
<h2 style="color: #800">Oopsie! You need to update Pluto to the latest version</h2>
<p>Close Pluto, go to the REPL, and type:
<pre><code>julia> import Pkg
julia> Pkg.update("Pluto")
</code></pre>
`

const super_old = window.version_info == null || window.version_info.pluto == null
if(super_old) {
	return warning
}
const version_str = window.version_info.pluto.substring(1)
const numbers = version_str.split(".").map(Number)
console.log(numbers)

if(numbers[0] > 0 || numbers[1] > 12 || numbers[2] > 1) {
	
} else {
	return warning
}

</script>

"""metadatashow_logsèdisabled®skip_as_script«code_folded$1e2cd0b0-19c4-11eb-3583-0b82092139aacell_id$1e2cd0b0-19c4-11eb-3583-0b82092139aacode)md"_Let's create a package environment:_"metadatashow_logsèdisabled®skip_as_script«code_folded$6cf7df1a-1c7a-11eb-230b-df1333f191c7cell_id$6cf7df1a-1c7a-11eb-230b-df1333f191c7codeumd"""
> Note that we did not define the `sort` and `minimum` methods ourselves! We only added methods for `Base.isless`.

By taking the minimum, we have found our closest hit! Let's turn this into a function. 

👉 Write a function `closest_hit` that takes a `photon` and a vector of objects. Calculate the vector of `Intersection`s/`Miss`es, and return the `minimum`.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$5a9d00f6-1ac3-11eb-01fb-53c35796e766cell_id$5a9d00f6-1ac3-11eb-01fb-53c35796e766codea_miss = Miss()metadatashow_logsèdisabled®skip_as_script«code_folded$ec275590-19c3-11eb-23d0-cb3d9f62ba92cell_id$ec275590-19c3-11eb-23d0-cb3d9f62ba92codeImd"## Function library

Just some helper functions used in the notebook."metadatashow_logsèdisabled®skip_as_script«code_folded$0e9a240c-1ac5-11eb-1a7e-b3c43c459484cell_id$0e9a240c-1ac5-11eb-1a7e-b3c43c459484codelet
	if length(box_scene) != 4
		keep_working()
	elseif !(box_scene isa Vector{Wall})
		keep_working(md"`box_scene` should be a Vector of `Wall` objects.")
	else
		w = last(box_scene)
		
		if w.position != [0,10]
			keep_working(md"The wall's position is not correct.")
		elseif w.normal != [0,-1]
			keep_working(md"The wall's direction is not correct.")
		else
			correct()
		end
	end
endmetadatashow_logsèdisabled®skip_as_script«code_folded$e9c6a0b8-1ad0-11eb-1606-0319caf0948acell_id$e9c6a0b8-1ad0-11eb-1606-0319caf0948acodeAmd"""
 $(html"<br><br><br><br>")
## **Exercise 2:** _Mirrors_
"""metadatashow_logsèdisabled®skip_as_script«code_folded$54b81de0-193f-11eb-004d-f90ec43588f8cell_id$54b81de0-193f-11eb-004d-f90ec43588f8codeTmd"""
We need a helper functions to find the normal of the sphere's surface at any position. Remember that the normal will always be pointing perpendicularly from the surface of the sphere. This means that no matter what point you are at, the normal will just be a normalized vector of your current location minus the sphere's position:
"""metadatashow_logsèdisabled®skip_as_script«code_folded$7ba5dda0-1ad1-11eb-1c4e-2391c11f54b3cell_id$7ba5dda0-1ad1-11eb-1c4e-2391c11f54b3codemd"""
#### Exercise 2.3 - _accumulate_

👉 Write a function `trace` that takes an initial `Photon`, a vector of `Object`s and `N`, the number of steps to make. Return a vector of `Photon`s. Try to use `accumulate`.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$1ee0787e-1a08-11eb-233b-43a654f70117cell_id$1ee0787e-1a08-11eb-233b-43a654f70117code=let
	p = plot_scene(ex_1_scene, legend=false, xlim=(-11,11), ylim=(-11,11))
	
	path = trace(philip, ex_1_scene, mirror_test_ray_N)
	
	
	line = [philip.p, [r.p for r in path]...]
	plot!(p, first.(line), last.(line), lw=5, color=:pink)
	
	plot_photon_arrow!(p, philip)
	plot_photon_arrow!.([p], path)
	
	p
end |> as_svgmetadatashow_logsèdisabled®skip_as_script«code_folded$ec4abc12-19c3-11eb-1ca4-b5e9d3cd100bcell_id$ec4abc12-19c3-11eb-1ca4-b5e9d3cd100bcodeـstill_missing(text=md"Replace `missing` with your answer.") = Markdown.MD(Markdown.Admonition("warning", "Here we go!", [text]))metadatashow_logsèdisabled®skip_as_script«code_folded$eff9329e-1a05-11eb-261f-734127d36750cell_id$eff9329e-1a05-11eb-261f-734127d36750code٘function plot_scene(objects::Vector{<:Object}; kwargs...)
	p = plot(aspect_ratio=:equal; kwargs...)
	
	for o in objects
		plot_object!(p, o)
	end
	p
endmetadatashow_logsèdisabled®skip_as_script«code_folded$0906b340-19d3-11eb-112c-e568f69deb5dcell_id$0906b340-19d3-11eb-112c-e568f69deb5dcode0test_wall = Wall(
	[8,-1],
	normalize([-3,1]),
)metadatashow_logsèdisabled®skip_as_script«code_folded$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5cell_id$a99c40bc-1c7c-11eb-036b-7fe6e9b937e5codeټlet
	p = plot_scene(ex_1_scene)
	
	plot_photon_arrow!(p, philip, 4; label="Philip")
	
	scatter!(p, test_closest.point[1:1], test_closest.point[2:2], label="Closest hit")
	
	p |> as_svg
endmetadatashow_logsèdisabled®skip_as_script«code_folded$13fef49c-1c9e-11eb-2aa3-d3aa2bfd0d57cell_id$13fef49c-1c9e-11eb-2aa3-d3aa2bfd0d57codemd"""
By defining a method for `interact` that takes a sphere intersection, we are now able to use the machinery developed in Exercise 2 to simulate a scene with both lenses and mirrors. Let's try it out!
"""metadatashow_logsèdisabled®skip_as_script«code_folded$1df82c20-19c4-11eb-0959-8543a0d5630dcell_id$1df82c20-19c4-11eb-0959-8543a0d5630dcodePmd"""

Submission by: **_$(student.name)_** ($(student.kerberos_id)@mit.edu)
"""metadatashow_logsèdisabled®skip_as_script«code_folded$337918f4-194f-11eb-0b45-b13fef3b23bfcell_id$337918f4-194f-11eb-0b45-b13fef3b23bfcodelPlutoUI.Resource("https://upload.wikimedia.org/wikipedia/commons/6/67/Line-Sphere_Intersection_Cropped.png")metadatashow_logsèdisabled®skip_as_script«code_folded$70b8401e-1c7e-11eb-16b2-d54d8f66d71acell_id$70b8401e-1c7e-11eb-16b2-d54d8f66d71acodeVmd"""
👉 Verify that the function `reflect` works by writing a simple test case:
"""metadatashow_logsèdisabled®skip_as_script«code_folded$eb35ac4a-1acc-11eb-0729-ff85c8406c45cell_id$eb35ac4a-1acc-11eb-0729-ff85c8406c45code@@bind aberration_viz_ior Slider(1.0:0.0001:2.0, show_value=true)metadatashow_logsèdisabled®skip_as_script«code_folded$0b03316c-1c80-11eb-347c-1b5c9a0ae379cell_id$0b03316c-1c80-11eb-347c-1b5c9a0ae379code0test_new_photon = interact(philip, test_closest)metadatashow_logsèdisabled®skip_as_script«code_folded$ec3ed530-19c3-11eb-10bb-a55e77550d1fcell_id$ec3ed530-19c3-11eb-10bb-a55e77550d1fcodeSalmost(text) = Markdown.MD(Markdown.Admonition("warning", "Almost there!", [text]))metadatashow_logsèdisabled®skip_as_script«code_folded$42d65f56-1aca-11eb-1079-e32f85554349cell_id$42d65f56-1aca-11eb-1079-e32f85554349codemd"""
 $(html"<br><br><br><br>")
#### Exercise 1.3 - _hitting the wall_

👉 Write a function `intersection` that takes a `photon` and a `wall`, and returns either a `Miss` or an `Intersection`, based on the result of `intersection_distance(photon, wall)` ``= D``.

If $D$ is _positive_, then the photon will hit the wall, and we should return an `Intersection`. We already have the intersected object, and we have $D$, our intersection distance. To find the intersection _point_, we use the photon's position and velocity.

$p_{\text{intersection}} = p_{\text{ray}} + D\hat \ell$

If $D$ is _negative_ (or zero), then the wall is _behind_ the photon - we should return a `Miss`.

##### Floating points
We are using _floating points_ (`Float64`) to store positions, distances, etc., which means that we need to account for small errors. Like in the lecture, we will not check for `D > 0`, but `D > ϵ` with `ϵ = 1e-3`.
"""metadatashow_logsèdisabled®skip_as_script«code_folded$1b0c0e4c-1c73-11eb-225d-23c731455755cell_id$1b0c0e4c-1c73-11eb-225d-23c731455755codeAall_intersections = [intersection(philip, o) for o in ex_1_scene]metadatashow_logsèdisabled®skip_as_script«code_folded$e45e1d36-1a12-11eb-2720-294c4be6e9fdcell_id$e45e1d36-1a12-11eb-2720-294c4be6e9fdcode'plot_scene([test_wall], size=(400,200))metadatashow_logsèdisabled®skip_as_script«code_folded$5501a700-19ec-11eb-0ded-53e41f7f821acell_id$5501a700-19ec-11eb-0ded-53e41f7f821acodeclet
	p = plot_scene(ex_1_scene, legend=false, size=(400,200))
	plot_photon_arrow!(p, philip, 5)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89cell_id$b3ab93d2-1a0b-11eb-0f5a-cdca19af3d89code(ex_3_scene = [test_sphere, box_scene...]metadatashow_logsèdisabled®skip_as_script«code_folded$83aa9cea-1a0c-11eb-281d-699665da2b4fcell_id$83aa9cea-1a0c-11eb-281d-699665da2b4fcodelet
	p = plot_scene(ex_3_scene)
	
	plot_photon_arrow!(p, philip, 4; label="Philip")
	if sphere_intersection isa Intersection
		scatter!(p, sphere_intersection.point[1:1], sphere_intersection.point[2:2], label="Intersection point")
	end
	
	p |> as_svg
endmetadatashow_logsèdisabled®skip_as_script«code_folded$900d6622-1a08-11eb-1475-bfadc2aac749cell_id$900d6622-1a08-11eb-1475-bfadc2aac749codeِfunction trace(photon::Photon, scene::Vector{<:Object}, N)
	accumulate(1:N; init=photon) do old_photon, i
		step_ray(old_photon, scene)
	end
endmetadatashow_logsèdisabled®skip_as_script«code_folded$14dc73d2-1a0d-11eb-1a3c-0f793e74da9bcell_id$14dc73d2-1a0d-11eb-1a3c-0f793e74da9bcodefunction refract(
		ℓ₁::Vector, n̂::Vector,
		old_ior, new_ior
	)
	
	r = old_ior / new_ior
	
	n̂_oriented = if -dot(ℓ₁, n̂) < 0
		-n̂
	else
		n̂
	end
	
	c = -dot(ℓ₁, n̂_oriented)
	
	normalize(r * ℓ₁ + (r*c - sqrt(1 - r^2 * (1 - c^2))) * n̂_oriented)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$1a43b70c-1ca3-11eb-12a5-a94ebbba0e86cell_id$1a43b70c-1ca3-11eb-12a5-a94ebbba0e86codeV# function trace(photon::Photon, scene::Vector{<:Object}, N)
	
# 	return missing
# endmetadatashow_logsèdisabled®skip_as_script«code_folded$abe3de54-1ca0-11eb-01cd-11fe798bfb97cell_id$abe3de54-1ca0-11eb-01cd-11fe798bfb97codeV# function intersection_distance(photon::Photon, wall::Wall)
	
# 	return missing
# endmetadatashow_logsèdisabled®skip_as_script«code_folded«notebook_id$118fc668-4aa6-11f0-2ffc-8f791164447bin_temp_dir¨metadata